題目連接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 }