题目:https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/
代码:
class Solution {
public int sumNumbers(TreeNode root) {
return this.sumNumbers(root, 0);
}
private int sumNumbers(TreeNode node, int preNum) {
if (node == null) {
return 0;
}
//当前节点所代表的数字
int num = preNum * 10 + node.val;
if (node.left == null && node.right == null) {
//叶子节点,num就是结果
return num;
}else{
//非叶子节点,需要递归
return this.sumNumbers(node.left, num) + this.sumNumbers(node.right, num);
}
}
}
新增一个方法,node参数为树中的某一个节点,preNum为根节点到当前节点之前所代表的数字(未包含当前节点的值),根据题目意思,则当前节点所代表的的数字值为代码中标红部分。有了这个方法,剩下的只要根据条件判断及递归即可。