Sunday, September 1, 2013

Sum Root to Leaf Numbers

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.

    void calcsum(TreeNode *root, int curr, int & gsum)
{
    if(!root)
        return;
    
   if(!root->left && !root->right)
   {
       gsum += curr;
       return;
   }
    
    if(root->left)
    calcsum(root->left, curr * 10  + root->left->val, gsum);
    
    if(root->right)
    calcsum(root->right, curr * 10  + root->right->val, gsum);
}


int sumNumbers(TreeNode *root) {
    int sum = 0;
    if(!root)
        return sum;
    int curr = root->val;
    calcsum(root, curr, sum);
    return sum;
}

No comments:

Post a Comment