129.Sum Root to Leaf Numbers

題目連接ide

題目大意:給出一個二叉樹,從根節點到葉的路徑上的數值組成一個int型的數值,將全部路徑上的全部數值相加獲得最總和。例子以下:spa

法一:DFS。從根節點到葉節點,在路徑上每到達一個節點,則計算出其值,而後DFS進去便可。代碼以下(耗時1ms):3d

 1     public int sumNumbers(TreeNode root) {
 2         if(root == null) {
 3             return 0;
 4         }
 5         int res = 0;
 6         res = dfs(root, 0, res);
 7         return res;
 8     }
 9     private static int dfs(TreeNode root, int cnt, int res) {
10         //計算最後葉節點的數值,因爲前面有判斷進來的節點是否爲null,因此這裏root必定是非空節點
11         if(root.left == null && root.right == null) {
12             res += cnt * 10 + root.val;
13             return res;
14         }
15         //計算根節點的數值
16         cnt = cnt * 10 + root.val;
17         //若是有左孩子,遍歷左孩子
18         if(root.left != null) {
19             res = dfs(root.left, cnt, res);
20         }
21         //若是有右孩子,遍歷右孩子
22         if(root.right != null) {
23             res = dfs(root.right, cnt, res);
24         }
25         return res;
26     }
View Code
相關文章
相關標籤/搜索