二叉树根节点到叶子节点的所有路径和

思路: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);
    }
}
posted @ 2021-03-09 12:10  zjcfrancis  阅读(811)  评论(0编辑  收藏  举报