LeetCode Sum Root to Leaf Numbers
阿新 • • 發佈:2019-02-16
本題與相似,都是遞迴呼叫。終止條件都是左右child都是空,否則cur*10加child.val, 遞迴呼叫函式,再去掉尾節點。
Note:1. helper 是pass by value, 所以res一定要用個array儲存。
2. 遞迴呼叫後需要去掉尾節點,本題中除以10即可。
3. root == null 的corner case 是在主函式裡單獨討論,helper裡不需要重複討論。
AC Java:
/** * 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; } int cur = root.val; int [] res = new int[1]; res[0] = 0; helper(root, res, cur); return res[0]; } private void helper(TreeNode root, int [] res, int cur){ if(root.left == null && root.right == null){ res[0] += cur; return; } if(root.left != null){ cur*=10; cur+=root.left.val; helper(root.left,res,cur); cur/=10; } if(root.right != null){ cur*=10; cur += root.right.val; helper(root.right, res, cur); cur/=10; } } }