思路:dfs
每條根節點到葉子節點的路徑都用一個數字代替,即每向下一個節點,之前的數字都左移一位。
通過dfs找到左右子樹所有路徑,最后回溯求和。
代碼:
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode類 * @return int整型 */ public int sumNumbers (TreeNode root) { // write code here return dfs(root, 0); } int dfs(TreeNode root, int sum) { if (root == null) return 0; sum = sum * 10 + root.val; if (root.left == null && root.right == null) return sum; return dfs(root.left, sum) + dfs(root.right, sum); } }