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

深度优先搜索,申请两个数组即可。 注意终止条件。

public ArrayList<ArrayList<Integer>> FindPath(TreeNode root, int expectNumber) {
        ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> list=new ArrayList<Integer>();

        if(root==null) return lists;
        dfs(root,list,lists,expectNumber);
        return lists;
    }
    public void dfs(TreeNode root,ArrayList<Integer> list,ArrayList<ArrayList<Integer>> lists,int sum){
        
        if(root==null) return;
        list.add(root.val);
        sum-=root.val;
        if(sum==0&&root.left==null&&root.right==null) lists.add(new ArrayList<>(list));
        dfs(root.left,list,lists,sum);
        dfs(root.right,list,lists,sum);
        list.remove(list.size()-1);
        
    }
全部评论

相关推荐

头像
06-12 10:39
Java
给你们全都来一刀:你了解回暖的核心逻辑吗,读过回暖的源码吗,上线过回暖相关的项目吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务