这道题采用递归的方法,leetcode有很多道题都用了这样的思想,不多说了,代码见
public class SumRoottoLeafNumbers {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
//存储最终结果
int sum = 0;
public int sumNumbers(TreeNode root) {
if(root == null){
return 0;
}
if(root.left == null && root.right == null){
return root.val;
}
iterate(root, root.val);
return sum;
}
//递归搜索
private void iterate(TreeNode root,int temp){
if(root.left == null && root.right == null){
sum = sum + temp;
return;
}
if(root.left != null){
iterate(root.left,temp * 10 + root.left.val);
}
if(root.right != null){
iterate(root.right, temp * 10 + root.right.val);
}
}
}