1. 程式人生 > 其它 >129. 求根節點到葉節點數字之和

129. 求根節點到葉節點數字之和

給你一個二叉樹的根節點 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);
    }
}