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

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

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();
    }
}
全部评论

相关推荐

你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务