题解 | #二叉树中和为某一值的路径#

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

http://www.nowcoder.com/practice/b736e784e3e34731af99065031301bca

前序遍历二叉树,用list集合存储所经过的节点值
将当前节点值加入list,判断从根节点到当前节点和目标和的大小关系
1.大于或者此节点为null,返回。否则将当前节点加入list
2.等于,判断是否已经是叶子节点,是将当前集合加入结果集,
3.小于,继续去找当前节点的左右子节点进行判断
4.从list删除当前节点,返回,

public class Solution {
    public ArrayList<ArrayList<Integer>> res=new ArrayList();
    public ArrayList<Integer> list=new ArrayList();
    public ArrayList<ArrayList<Integer>> FindPath(TreeNode root,int target) {
             dfs(root,target);
              return res;
    }
    public void dfs(TreeNode root,int target){
       //(1)
        if(root==null||target-root.val<0){
            return;
        }

         list.add(root.val);//加入当前节点值
        if(target-root.val==0&&root.left==null&&root.right==null){
            res.add(new ArrayList(list));  //(2)加入结果集
        }
         //递归(3)
        dfs(root.left,target-root.val);
        dfs(root.right,target-root.val);
         list.remove(list.size()-1);   //(4)回溯
    }
}
全部评论
就是我这边的测试用例,节点值有负数的话就通过不了
点赞 回复 分享
发布于 2022-03-02 12:29
可以吧,加上就不用做后边的判断了,相当于剪枝。短路或运算符如果前边的值为true不会去再进行后边的的判断,不会有啥空指针异常的,还是你说的是其他原因?
点赞 回复 分享
发布于 2022-02-28 21:15
楼主,target-root.val<0 这句代码不能加啊
点赞 回复 分享
发布于 2022-02-28 21:06

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务