二叉树中和为某一值的路径

31 阅读1分钟

二叉树中和为某一值的路径

public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int target) {
    ArrayList<ArrayList<Integer>> res = new ArrayList<>();
    ArrayList<Integer> values = new ArrayList<>();
    backtrack(root,target,values,res);
    return res;
}

// values : 记录从根节点到叶子节点的所有路径
// paths : 存储所有可能的结果
private void backtrack(TreeNode root, int target,
                       ArrayList<Integer> values,
                       ArrayList<ArrayList<Integer>> paths) {
    if (root == null) {
        return;
    }
    values.add(root.val);
    if(root.left==null && root.right==null && root.val==target){
        paths.add(new ArrayList<>(values));
    }else{
        backtrack(root.left,target-root.val,values,paths);
        backtrack(root.right,target-root.val,values,paths);
    }
    values.remove(values.size()-1);
}

www.mianshi.onlinewww.i9code.cn

本文由博客一文多发平台 OpenWrite 发布!