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;
}