乐趣区

关于java:34-二叉树中和为某一值的路径

34. 二叉树中和为某一值的门路

思路:先序遍历

存一个数到 path 中,target 就减一次

留神:把一条门路 path 增加到最终返回的 res 中时,须要 新创建一个 LinkedList 对象,不然前面 path 变动,res 中也会跟着变动。

代码:

LinkedList<List<Integer>> res = new LinkedList<>();// 最终寄存的所有门路
LinkedList<Integer> path = new LinkedList<>();// 一条门路

public List<List<Integer>> pathSum(TreeNode root, int sum) {recur(root, sum);
    return res;
}

void recur(TreeNode root, int tar) {if (root == null) return;// 是 null 就阐明到底了
    path.add(root.val);// 把节点增加到 path 中
    tar = tar - root.val;//target 同步减去 root 的值
    if (tar == 0 && root.left == null && root.right == null) {res.add(new LinkedList(path));// 如果到底了且 target 也减完了,这条门路才符合条件
        // 能够存入 res 中,这里留神要新建一个 LinkedList 对象
    }
    recur(root.left, tar);// 先序遍历 左右子树
    recur(root.right, tar);
    path.removeLast();// 如果以后节点的左右都遍历完了,返回上一节点}
退出移动版