当前位置: 首页 > news >正文

外国小孩和大人做网站百度发布平台官网

外国小孩和大人做网站,百度发布平台官网,招聘网站咋做,公司做网站比较好的平台给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 在这里给大家提供两种方法进行思考,第一种方法是递归,第二种方式使用回溯的方式进行爆…

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。

叶子节点 是指没有子节点的节点。

 在这里给大家提供两种方法进行思考,第一种方法是递归,第二种方式使用回溯的方式进行爆搜

        递归:树具有天然的递归结构,将一个大的问题转换成多个相同的子问题而进行解决,就相当于你会0-1的算式,你自然而然可以推导出0-n的算式(递归终止条件+递归操作

       我觉的这个图可以很形象的说明一些问题,通过改变每个结点的差值,最后进行叶子结点与传入的target进行比较,如果相等,就说明树中肯定有满足情况的路径

解题步骤:

  • 方法中返回什么,我们就创建什么
 public List<List<Integer>> pathSum(TreeNode root, int targetSum) {List<List<Integer>> resList=new LinkedList<>();...}
  • 递归结束的条件(分为第一次入参和叶子结点的入参,两者的操作不一样)
        //如果传进行的叶子结点为空,直接返回一个空链表if(root==null){return resList;}//如果是叶子结点且叶子结点的值等于target,则该叶子结点是满足情况下的一条路径上的值if(root.left==null&&root.right==null){if(root.val==targetSum){List<Integer> list=new LinkedList<>();list.add(root.val);//将该路径加入总结果集中resList.add(list);}return resList;}
  • 每次递归的时候将target-root.val作为参数传下去
int diff=targetSum-root.val;
  • 如果左树不为空,递归左树,如果右树不为空,递归右树
        if(root.left!=null){List<List<Integer>> curList=pathSum(root.left,diff);for(int i=0;i<curList.size();i++){List<Integer> list1=curList.get(i);//将该节点加入路径中list1.add(0,root.val);//加入到结果集中resList.add(list1);}}if(root.right!=null){List<List<Integer>> curList=pathSum(root.right,diff);for(int i=0;i<curList.size();i++){List<Integer> list1=curList.get(i);list1.add(0,root.val);resList.add(list1);}}
  • 最后每次递归结束后返回结果集,供归的时候进行使用
return resList;

方法二:回溯 

回溯的方法相当于暴力搜索一样,但是对于面试而言,我更加推荐回溯(比较容易记忆)

    //大体思想其实和递归差不多,就是回溯这种题有个特定的模板,有的时候,即使你不会做,那你也有可能把题做出来List<List<Integer>> resList=new LinkedList<>();List<Integer> path=new LinkedList<>();public List<List<Integer>> pathSum(TreeNode root, int targetSum) {if(root==null){return resList;}backtracing(root,targetSum);return resList;}public void backtracing(TreeNode root,int targetSum){if(root==null){return;}path.add(root.val);if(targetSum==root.val&&root.left==null&&root.right==null){resList.add(new ArrayList<>(path));}int diff=targetSum-root.val;if(root.left!=null){pathSum(root.left,diff);//回溯path.remove(path.size()-1);}if(root.right!=null){pathSum(root.right,diff);path.remove(path.size()-1);}}

http://www.shuangfujiaoyu.com/news/51387.html

相关文章:

  • 网站网页制作教程注册域名
  • 需要网站建设贵州seo培训
  • 做网站所用的工具百度经验手机版官网
  • 长沙给中小企业做网站的公司怎么自己注册网站
  • 网站图标ico 需要多大网络推广都有什么方式
  • 浏阳做网站推荐企业网站seo排名
  • 那个网站可以做司考真题华为手机软文范文300
  • 湖州做网站品牌推广的作用
  • 临安建设投标网站产品推广
  • 怎么样用dw做网站百度竞价推广技巧
  • 网站建设陷阱yandex引擎搜索入口
  • 营销型 网站开发全网推广哪家正宗可靠
  • 太仓网站建设网络公司主要做哪些
  • 爱网站找不到了seo推广有哪些
  • 做汤的网站有哪些东莞网站自动化推广
  • 网站app建设图片求个没封的网站2022
  • 怎么查看网站空间是否到期网络营销app有哪些
  • 深圳哪家做网站宣传广告怎么做吸引人
  • 淘宝网站首页怎么做百度代理
  • 杭州网站建设外包公司百度广告联盟一个月能赚多少
  • 盐城做百度网站站长工具 seo查询
  • 网站如何做二级域名个人博客搭建
  • 一站式做网站优化大师apk
  • 网站 keywords推广平台都有哪些
  • 呼和浩特网站建设价位长尾关键词快速排名软件
  • 在线制作论坛网站seo教程网
  • 安装多个wordpress东莞seo推广
  • 深圳网站设计制作公司 维仆seo新人培训班
  • 网线水晶头接法seo推广是什么工作
  • 政府网站建设基础域名注册局