记录一下做的题
求根节点到叶节点数字之和
输入:root = [1,2,3]
输出:25
解释:
从根到叶子节点路径 1->2 代表数字 12
从根到叶子节点路径 1->3 代表数字 13
因此,数字总和 = 12 + 13 = 25
-
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 a=0;
public int sumNumbers(TreeNode root) {
//递推掉用获取每一个左右结点直到为空
//将没个节点的值获取10 然后想加
//如果左右子节点都为空则返回当前节点结果
scd(root,0);
return res;
}
//root 为节点 num为根节点到叶子结点的值
//时间复杂度为O(n) 取决于树的层级 多少层就得吊用scd方法多少次
public void scd(TreeNode root,int num){
//为了进位10
num = num * 10 + root.val;
//如果都为null说明到达了叶子结点
if(root.left==null&&root.right ==null) a +=num;
//判断左子节点
if(root.left!=null) scd(root.left,num);
//判断右子节点
if(root.right!=null) scd(root.right,num);
}
}`