131.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.

Subscribe to see which companies asked this question

前序遍历,在之前路径和的基础上乘10再加上当前值,然后继续遍历。

/**
	 * 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.调用这个方法之后返回的是25.
	 * @date 20160515
	 * @param root
	 * @return
	 */
	 public int result = 0;
	 public int sumNumbers(TreeNode root) {
	     int sum = 0;
	     if(root == null){
	    	 return 0;
	     }
	     if(root.left == null && root.right == null){
	    	 return root.val;
	     }
	     preTrav(root,sum);
	     return result;
	 }
	 
	 /**
	  * 前序遍历统计
	  * @param root
	  * @param sum
	  */
	private void preTrav(TreeNode root,int sum){
		 sum = sum*10 + root.val;
		if(root.left == null && root.right == null){
			 result = result + sum;
			 return;
		}else if(root.left != null){
			preTrav(root.left,sum);
		}
		if(root.right != null){
			preTrav(root.right,sum);
		}
	}


你可能感兴趣的:(131.Sum Root to Leaf Numbers)