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

四川成都网站网页设计漯河市疾控中心最新消息

四川成都网站网页设计,漯河市疾控中心最新消息,无锡市规划建设局网站,郑州做网站优化电话二叉树 && 树 - 问题集合 DFS解决二叉树类问题总体思路寻找公共祖先问题问题 1 :最深叶节点的最近公共祖先步骤 1 :以小问题为例进行思考步骤 2 :扩展成大问题实现 DFS解决二叉树类问题总体思路 DFS解决二叉树问题,本质上…

二叉树 && 树 - 问题集合

  • DFS解决二叉树类问题总体思路
  • 寻找公共祖先问题
    • 问题 1 :最深叶节点的最近公共祖先
      • 步骤 1 :以小问题为例进行思考
      • 步骤 2 :扩展成大问题
      • 实现

DFS解决二叉树类问题总体思路

DFS解决二叉树问题,本质上是一个小问题嵌套一个小问题,所有小问题组成大问题,每个问题的解决方案一致。
所以在思考的时候,一定不要被题目复杂给迷惑了:

一定要从最简单的二叉树样例开始思考:1、是从下往上回溯处理,逐层返回信息;2、还是从上往下逐层处理
只要想通小问题的解决办法,并将之成功扩展成大问题的解决方案,二叉树问题轻松解决

寻找公共祖先问题

寻找公共祖先问题,最简单的思路,记住:

使用回溯法,从下到上处理,逐层返回可能是公共祖先的节点信息。

问题 1 :最深叶节点的最近公共祖先

我们以为力扣1123. 最深叶节点的最近公共祖先例对该问题进行讲解。

在这里插入图片描述

步骤 1 :以小问题为例进行思考

我们用如下的例子进行思考:因为题干中还要求我们找的是最深叶节点的公共祖先,所以要带上深度信息
1:
在这里插入图片描述
只有一个节点,两个子节点都是空,我们认为深度都==0,此时节点1是两个空节点的公共祖先.

2:
在这里插入图片描述
按照上面的思路,此时2、3分别是各自子树的最近公共祖先,深度各自为1
在节点1看来,左侧右侧深度都是1,都是当前位置最大深度叶子节点,所以此时公共祖先就是1
节点1将自己的信息上报,并将深度+1
3:
在这里插入图片描述
此时在1看来,左侧深度1,右侧深度0,所以:

1、节点1不可能是公共祖先,因为其右侧子树压根没东西,公共祖先参与的子节点数>=2
2、所以节点1只能是维持左侧子树上传来的结果
3、并将此时深度+1继续上报

4、同“3”中描述,节点1维持右侧上报消息,并将深度+1
在这里插入图片描述

步骤 2 :扩展成大问题

1)我们将上述信息进行扩展,针对任意一个节点:

1、他发现左侧子树上报的深度==右侧子树,说明这个子树的最深叶子节点公共祖先是它本身,他将自己上报,并深度++
2、他发现左侧子树上报的深度 > 右侧子树,说明这个左子树才拥有当前子树的最深叶子节点,公共祖先肯定在他们那所以维持左侧原判,并深度++
3、他发现左侧子树上报的深度 < 右侧子树,说明这个右子树才拥有当前子树的最深叶子节点,公共祖先肯定在他们那所以维持右侧原判,并深度++

2)根据题中要求,我们不难发现,我们需要返回的信息中,同时包括:深度+节点信息,所以返回:

pair<int,TreeNode*>

实现

class Solution {
public:pair<int,TreeNode*> find(TreeNode* root) {if (root == nullptr) {//当遇到空节点,此时深度=0,返回空节点return { 0,nullptr };}//先往左右走再判断,是回溯思路,也就是从下往上,一层层返回目标节点auto left = find(root->left);auto right = find(root->right);//子节点的深度相同,会首先返回自己//当走到非子结点时,我们要的是最深叶节点的最近公共祖先,哪边深返回哪边,一样的话返回中间if (left.first == right.first) {return { left.first + 1,root };}if (left.first < right.first) {return { right.first + 1,right.second };}return { left.first + 1,left.second };}TreeNode* lcaDeepestLeaves(TreeNode* root) {return find(root).second;}
};

文章转载自:

http://0945cxHZ.sbczr.cn
http://CgTjj9po.sbczr.cn
http://mZgkHhnA.sbczr.cn
http://j2YrJdk0.sbczr.cn
http://MqKp0Mnf.sbczr.cn
http://0NAhVkjJ.sbczr.cn
http://EsKZjuDX.sbczr.cn
http://slVcgbpm.sbczr.cn
http://7zbgHINF.sbczr.cn
http://EMJhG3jn.sbczr.cn
http://hX3roE6j.sbczr.cn
http://YHGtmyTE.sbczr.cn
http://Lx4Xy4FA.sbczr.cn
http://r4Kwwr1s.sbczr.cn
http://E9rVSdjd.sbczr.cn
http://Uo15eZfe.sbczr.cn
http://0axl7IgO.sbczr.cn
http://Wzf6fyPo.sbczr.cn
http://qkMNp1nM.sbczr.cn
http://IrnoudYB.sbczr.cn
http://r9Annz6e.sbczr.cn
http://6S7b7VBM.sbczr.cn
http://j0FnzmdS.sbczr.cn
http://GdxacmwW.sbczr.cn
http://0HRWWXyT.sbczr.cn
http://WSaQGDO6.sbczr.cn
http://WJkiPaWt.sbczr.cn
http://QxFf8fMw.sbczr.cn
http://JUcu98Z5.sbczr.cn
http://QQuX49X1.sbczr.cn
http://www.dtcms.com/wzjs/756620.html

相关文章:

  • 计算机网站建设论文.网站信任的体验如何做
  • 东莞优化seo网站关键词优化海口注册公司流程及费用
  • 企业网站建设 百度文库开电商需要多少钱
  • 情侣博客网站模板下载涪陵网站制作
  • 长沙网站设计流程凡客集团
  • 二级域名怎么做网站百度云搜索资源入口
  • 网站策划建站关键词排名什么意思
  • 网站建设投标书范本筑巢网站
  • 狮山网站制作织梦手机网站制作教程
  • 网站建设实验结论群晖 wordpress 域名
  • 学电商比较好的网站有哪些5118网站查询
  • nas做流媒体网站wordpress 简约企业
  • 网站开发兼职网站wordpress 后台密码文件
  • 快速优化网站排名的方法电子商务网站体系结构有哪些
  • 网站建设后怎么做主页引流推广平台违法吗
  • 酒店网页设计素材黑帽seo培训大神
  • 湖南住房城乡建设厅网站网站建设在哪个软件下做
  • 织梦贷款网站模板做生物学的网站
  • 青岛网站网站建设无锡哪家做网站好
  • 网站首页适合vue做吗静态网站 动态
  • 成都网站开发培训机构电商网站seo公司
  • 网站推广关键词工具拼多多网上购物入口
  • 网站开发 占位符重庆百度优化
  • 做企业网站需要多久做魔杖网站
  • 农家乐网站建设多少钱网站建设报什么专业
  • 公司网站制作需要多少钱义乌财务公司是做什么的
  • 品牌网站建设专业定制微网站自己怎么做的
  • FPGA毕业设计代做网站十五种常见的销售策略
  • 转笔教学网站建设部网站合并
  • 医院网站模板 html设置网站的默认页面