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

25 lines
1.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [129. Sum Root to Leaf Numbers](https://leetcode.com/problems/sum-root-to-leaf-numbers/)
# 思路
采用递归的思路用sum记录根到某节点组成数字的值那么每遇到一个子结点的数字要把之前sum的数字扩大10倍之后再加上当前节点的值。
如果遍历到叶结点了就将当前的累加结果sum返回。如果不是则对其左右子结点分别调用递归函数将两个结果相加返回即可。
当然也可以改成非递归的可以用当前节点的val记录上述的sum将自己的val加上父节点的val乘10作为新的val例如`node->left->val += 10 * node->val`,代码这里
就不放了。
# C++
``` 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);
}
};
```