[leetcode]Sum Root to Leaf Numbers

1519 ワード

新しいブログアドレス:[leetcode]Sum Root to Leaf Numbers
 
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.
典型的なDFSは、前序か後続かについては影響があるようだ.
 
	int result = 0;
	public int sumNumbers(TreeNode root){
		if(root == null){
			return 0;
		}
		getSum(root);
		return result;
	}
	
	private void getSum(TreeNode root){
		if(root.left == null && root.right == null){
			result += root.val;
		}		
		if(root.right != null){
			root.right.val += root.val * 10;
			getSum(root.right);
		}
		if(root.left != null){
			root.left.val += root.val * 10;
			getSum(root.left);
		}
	}