二叉树根节点到叶子节点的所有路径和
思路: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); } }