给你一个二叉树的根节点 root
,树中每个节点都存放有一个 0
到 9
之间的数字。
每条从根节点到叶节点的路径都代表一个数字:
- 例如,从根节点到叶节点的路径
1 -> 2 -> 3
表示数字123
。
计算从根节点到叶节点生成的 所有数字之和 。
叶节点 是指没有子节点的节点。
思路一:递归
int helper(struct TreeNode *root, int prevSum){
if (root == NULL) return 0;
int sum = prevSum * 10 + root->val;
if (root->left == NULL && root->right == NULL)
return sum;
else
return helper(root->left, sum) + helper(root->right, sum);
}
int sumNumbers(struct TreeNode* root){
if (root == NULL) return 0;
return helper(root, 0);
}
分析:
本题要求根节点到叶节点生成的所有数字之和,可以想到用递归的方法,每向下遍历一个数就将前面的数乘上十再加上当前的数,最后返回答案
总结:
本题考察二叉树的递归应用,将每个节点的数遍历完后再返回答案即可解决