Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path 1->2->3 which represents the number 123.
Find the total sum of all root-to-leaf numbers.
For example,
1
/ \
2 3
The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.
Return the sum = 12 + 13 = 25.
分析
从根到叶组成一系列的数,求之和。树的问题最好还是使用递归,到叶子节点时候计算总和跳出循环,如果有左右节点,依次计算之后返回总的和。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
int sum(struct TreeNode *root ,int temp,int answer)
{
if(root==NULL)return 0;
temp=temp*10+root->val;
if(root->left==NULL&&root->right==NULL)
{
answer+=temp;
return answer;
}
if(root->left!=NULL)
answer=sum(root->left,temp,answer);
if(root->right!=NULL)
answer=sum(root->right,temp,answer);
return answer;
}
int sumNumbers(struct TreeNode* root) {
return sum(root,0,0);
}