题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> pathSum (TreeNode root, int sum) {
        // write code here
        ArrayList<ArrayList<Integer>> outerList = new ArrayList<>();
        ArrayList<Integer> innerList = new ArrayList<>();

        if(root == null){
            return outerList;
        }
        int hasSum = 0;
        dfs(root, outerList, innerList, hasSum, sum);

        return outerList;
    }

    public void dfs(TreeNode root, ArrayList<ArrayList<Integer>> outerList, ArrayList<Integer> innerList, int hasSum, int total){
        hasSum += root.val;
        innerList.add(root.val);
        if(hasSum == total && root.left == null && root.right == null){
            outerList.add(new ArrayList<>(innerList));
        }
        if(root.left != null){ 
            // 必须要传副本过去
            dfs(root.left, outerList, new ArrayList<>(innerList), hasSum, total);
        }

        if(root.right != null){
            dfs(root.right, outerList, new ArrayList<>(innerList), hasSum, total);
        }
    }
}
全部评论

相关推荐

回家当保安:今天刚过字节一面,接佬的好运
我的求职进度条
点赞 评论 收藏
分享
努力的小明a:项目看着很眼熟,施磊老师吧,我也学的这个😋我当时是把rpc框架做成了一个分布式网盘,这是一个项目,然后muduo库做成集群即时通讯,又用QT做了个交互的客户端,这样又一个项目,然后一个轻量redis,一个CAD,总共四个项目,投了三个月就今天2月份一个小厂Qt offer,然后后面想开了,Qt啥的都能干,这个月get了个北京大厂的offer,做java后端,人生就是这么魔幻,现在就在去北京入职的路上
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务