1 解题思想
题目是给了一个二叉树,从根节点开始的一个数,到任何一个叶子节点的一个遍历的序列,构成一个数。
那么现在问题就是,这颗树能够成的所有数的和是多少?
这道题解题的方式也很直接,直接遍历,这里使用了DFS。每个
2 原题
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path 1->2->3 which represents the number 123.
Find the total sum of all root-to-leaf numbers.
For example,
1
/ \
2 3
The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.
Return the sum = 12 + 13 = 25.
3 AC解
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
/**
* 直接遍历就好,老方法
* */
public class Solution {
int total=0;
public void dfs(TreeNode root,int value){
if(root.left==null && root.right==null){ //leaf
total+=value;
}
if(root.left!=null)
dfs(root.left,value*10+root.left.val);
if(root.right!=null)
dfs(root.right,value*10+root.right.val);
}
public int sumNumbers(TreeNode root) {
if(root!=null){
dfs(root,root.val);
}
return total;
}
}