我这个菜逼又来了,菜到抠脚
本来用了迭代方法,结果回溯节点的时候一直错,不是多一个,就是少一个
后面用了递归,向作者低头
1.分别递归左节点,右节点。
2.当前节点为空结束
3.左右节点同时为空的时候进行计算
/**
* Definition for a binary tree node.
* public 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;
* }
* }
*/
class Solution {
int sum=0;
public int sumRootToLeaf(TreeNode root) {
f(root,0);
return sum;
}
public void f(TreeNode root,int n){
if(root==null){
return;
}
n=n*2+root.val;//越往下,值越大,翻倍加上当前值
if(root.left==null&&root.right==null){
sum+=n;//左右节点皆为空,说明这一条已经到底了
}
f(root.left,n);
f(root.right,n);
}
}