LeetCode/solutions/129. Sum Root to Leaf Numbers.md
2019-07-10 23:24:28 +08:00

1.0 KiB
Raw Blame History

129. Sum Root to Leaf Numbers

思路

采用递归的思路用sum记录根到某节点组成数字的值那么每遇到一个子结点的数字要把之前sum的数字扩大10倍之后再加上当前节点的值。 如果遍历到叶结点了就将当前的累加结果sum返回。如果不是则对其左右子结点分别调用递归函数将两个结果相加返回即可。

当然也可以改成非递归的可以用当前节点的val记录上述的sum将自己的val加上父节点的val乘10作为新的val例如node->left->val += 10 * node->val,代码这里 就不放了。

C++

class Solution {
private:
    int helper(TreeNode* root, int sum){
        if(!root) return 0;
        sum = sum * 10 + root -> val;
        if(!root -> left && !root -> right) return sum;
        return helper(root -> left, sum) + helper(root -> right, sum);
    }
public:
    int sumNumbers(TreeNode* root) {
        return helper(root, 0);
    }
};