LeetCode129 求根節點到葉子節點數字之和
阿新 • • 發佈:2022-02-13
題目
給你一個二叉樹的根節點 root ,樹中每個節點都存放有一個 0 到 9 之間的數字。
每條從根節點到葉節點的路徑都代表一個數字:
例如,從根節點到葉節點的路徑 1 -> 2 -> 3 表示數字 123 。
計算從根節點到葉節點生成的 所有數字之和 。
葉節點 是指沒有子節點的節點。
示例 1: 輸入:root = [1,2,3] 輸出:25 解釋: 從根到葉子節點路徑 1->2 代表數字 12 從根到葉子節點路徑 1->3 代表數字 13 因此,數字總和 = 12 + 13 = 25 示例 2: 輸入:root = [4,9,0,5,1] 輸出:1026 解釋: 從根到葉子節點路徑 4->9->5 代表數字 495 從根到葉子節點路徑 4->9->1 代表數字 491 從根到葉子節點路徑 4->0 代表數字 40 因此,數字總和 = 495 + 491 + 40 = 1026 提示: 樹中節點的數目在範圍 [1, 1000] 內 0 <= Node.val <= 9 樹的深度不超過 10
方法
深度優先遍歷法
- 時間複雜度:O(n),n為二叉樹節點個數
- 空間複雜度:O(n)
class Solution { private int sum = 0; public int sumNumbers(TreeNode root) { return dfs(root,0); } private int dfs(TreeNode root,int preSum) { if(root == null) return 0; preSum = preSum*10+root.val; if(root.left==null&&root.right==null){ return preSum; } return dfs(root.left,preSum)+dfs(root.right,preSum); } }
廣度優先遍歷法
- 時間複雜度:O()
- 空間複雜度:O()