129. 求根到叶子节点数字之和

题目: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为根节点到当前节点之前所代表的数字(未包含当前节点的值),根据题目意思,则当前节点所代表的的数字值为代码中标红部分。有了这个方法,剩下的只要根据条件判断及递归即可。