129. 求根節點到葉節點數字之和
阿新 • • 發佈:2021-09-07
給你一個二叉樹的根節點 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
連結: https://leetcode-cn.com/problems/sum-root-to-leaf-numbers
class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; } } public class Solution { int ans=0; public int sumNumbers(TreeNode root) { if(root==null) return 0; dfs(root,0); return ans; } public void dfs(TreeNode root,int base) { if(root==null) { return; } if(root.left==null&&root.right==null) { ans+=(base*10+root.val); } dfs(root.left,base*10+root.val); dfs(root.right,base*10+root.val); } }