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.
DFS:
void findPathSum(TreeNode* root, vector<int> &path, int &allsum)
{
path.push_back(root->val);
if(root->left == NULL && root->right == NULL){
vector<int>::iterator it = path.begin();
int tmpsum = 0;
for(; it != path.end(); ++it)
tmpsum = tmpsum*10 + *it;
allsum += tmpsum;
path.pop_back();
return;
}
if(root->left)
findPathSum(root->left,path,allsum);
if(root->right)
findPathSum(root->right,path,allsum);
path.pop_back();
}
int sumNumbers(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int allsum = 0;
if(root == NULL)
return allsum;
vector<int> path;
findPathSum(root, path, allsum);
return allsum;
}
寻找二叉树路径总和

2059

被折叠的 条评论
为什么被折叠?



