Monday, March 18, 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.


Solution:
Using recursive function, sum(node, val) is the sum of all node to leaf given that the each node to leaf value should be attached val in front.

return sum(root, 0)


public class Solution {
    int ret ;
 
    void sum(TreeNode root, int val){
        if(root.left == null && root.right == null) {
            ret += val* 10 + root.val;
            return;
        }
        val = val * 10 + root.val;
        if(root.left != null) sum(root.left,val);
        if(root.right != null) sum(root.right,val);
    }
 
    public int sumNumbers(TreeNode root) {
        // Start typing your Java solution below
        // DO NOT write main() function
        if(root == null) return 0;
        ret = 0;
        sum(root,0);
        return ret;
    }
}

No comments:

Post a Comment

Manacher's Longest Palindromic Substring Algorithm

http://manacher-viz.s3-website-us-east-1.amazonaws.com/#/