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

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

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

递归遍历记录当前的总数以及路径。当遍历到根节点(左右子树都为空时),就看当前总数是否与sum相等,相等就把当前的路径加到结果集里。

import java.util.*;

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>> res = new ArrayList<>();
        getRes(root,sum,res,0,new Stack<Integer>());
        return res;
    }
    public void getRes(TreeNode root, int sum ,ArrayList<ArrayList<Integer>> res, int curr, Stack<Integer> currNums){
        if(null==root)
            return;
        if(null == root.left && null == root.right){
            curr+=root.val;
            currNums.push(root.val);
            if(sum==curr){
                if(!currNums.isEmpty()){
                    ArrayList<Integer> list = new ArrayList(Arrays.asList(currNums.toArray(new Integer[0])));
                    res.add(list);
                }
            }
            currNums.pop();
            return;
        }
        currNums.push(root.val);
        getRes(root.left ,sum,res,curr+root.val,currNums);
        getRes(root.right,sum,res,curr+root.val,currNums);
        currNums.pop();
    }
}
全部评论

相关推荐

12-19 22:04
武汉大学 Java
点赞 评论 收藏
分享
Java转测开第一人:这种就是饼 把应届当廉价劳动力用完然后丢掉
你觉得今年秋招难吗
点赞 评论 收藏
分享
头像
10-27 15:50
门头沟学院 Java
想进开水团喝开水:有一种店 只能外卖 不能堂食 你猜为什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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