129. Sum Root to Leaf Numbers

 

题目如上,二叉树由根到节点上的值可以组成一个数字,该题是要求所有由根到最终节点的所有路径上的数字进行求和。

解题的主要思路是使用前序遍历,以前面节点的值乘以10再加上当前值的形式进行数字组合,当到达树叶结点的时候总和加上组建好的路径的值。

代码如下:

 

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     
12     private int sum = 0;
13 
14     public int sumNumbers(TreeNode root) {
15     
16         helper(root,0);
17         
18         return sum;
19     }
20     
21     private void helper(TreeNode root, int num){
22         if(root == null){
23             return;
24         }
25         
26         num = num*10 + root.val;
27         if(root.left != null ){
28             helper(root.left, num);
29         }
30         
31         if(root.right != null ){
32             helper(root.right, num);
33         }
34         
35         if(root.right == null && root.left == null){
36             sum += num;
37         }
38     }
39 }

 

 

END

posted @ 2018-04-11 10:10  sysu_kww  阅读(126)  评论(0编辑  收藏  举报