Related Links:
Path Sum: http://www.cnblogs.com/little-YTMM/p/4529982.html
Path Sum II: http://www.cnblogs.com/little-YTMM/p/4531115.html
Question:
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
.
Analysis:
给出一棵二叉树,其节点的值仅在0-9之间,二叉树的每条根节点到叶节点的路径都会产生一个数。
例如一条根-叶的路径1->2->3会产生数字123.
找出所有路径产生数字的和。
思路;由于以前做过path sum的题目,因此用类似的思路,用两个链表分别保存当前节点和当前已经产生的路径值,然后到叶节点时将该路径的值加到最终结果上即可。
Answer:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public int sumNumbers(TreeNode root) { if(root == null) return 0; LinkedList<TreeNode> node = new LinkedList<TreeNode>(); LinkedList<Integer> product = new LinkedList<Integer>(); node.add(root); product.add(root.val); int result = 0; while(!node.isEmpty()) { TreeNode tempNode = node.poll(); int tempProduct = product.poll(); if(tempNode.left == null && tempNode.right == null) result += tempProduct; if(tempNode.left != null) { node.add(tempNode.left); product.add(tempProduct * 10 + tempNode.left.val); } if(tempNode.right != null) { node.add(tempNode.right); product.add(tempProduct * 10 + tempNode.right.val); } } return result; } }