代码随想录算法训练营第30天|LeetCode236.二叉树的最小公共祖先

代码随想录算法训练营第30天|LeetCode236.二叉树的最小公共祖先

1、LeetCode236.二叉树的最小公共祖先

236. 二叉树的最近公共祖先 - 力扣(LeetCode)

自底向上查找,有点难度! | LeetCode:236. 二叉树的最近公共祖先_哔哩哔哩_bilibili

没啥想法。是彻底地不会写。

思路

找到了两个节点p,q,那么往上遍历,找到交汇节点即最小公共祖先。

Q:入口是根节点,那么如何从下往上遍历呢?
A:遍历顺序是从上往下,但是处理顺序可以是从下往上。——回溯,从底往上处理结果。后序遍历。

情况

情况1:
节点分别在左右子树。

  • 左子树只要出现了P,Q,往上返回,右子树同。(这样不会出现左右都是p的情况吗?不会,因为题目中说了二叉树的值不重复)
  • 左右都不为空,那么中就是最小公共祖先。

情况2:
节点本身就是祖先。
情况1包括了情况2。

236.二叉树的最近公共祖先2

递归三部曲

  1. 函数参数和返回值:传递根节点,p,q;返回p,q的最小公共祖先。
  2. 终止情况
    1. root为空,返回空
    2. 若是p或q,返回root
  3. 单层逻辑
    1. 左:左子树是否出现了p或q
      1. 左不空,右不空。返回root。
      2. 左空,右不空。返沪右
      3. 左不空,右空。返回左
      4. 左右都空,返回NULL

如何包含情况2?若root为p或q,直接返回root了,没有遍历root以下的树。

代码

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {// 终止条件if(root == NULL)return NULL;if(root == p || root == q)return root;// 单层逻辑TreeNode* left = lowestCommonAncestor(root->left, p, q);TreeNode* right = lowestCommonAncestor(root->right, p, q);if(left && right)return root;else if(left == NULL && right)return right;else if(left && right==NULL)return left;elsereturn NULL;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layui框架实战案例(26):layui-carousel轮播组件添加多个Echarts图标的效果

在Layui中,使用layui-carousel轮播组件嵌套Echarts图表来实现多个图表的展示。 css层叠样式表 调整轮播图背景色为白色;调整当个Echarts图表显示loading…状态;同一个DIV轮播项目添加多个Echarts的 .layui-carousel {background-color: #f…

Redis 缓存雪崩、穿透、击穿、预热

在实际工程中,Redis 缓存问题常伴随高并发场景出现。例如,电商大促、活动报名、突发新闻时,由于缓存失效导致大量请求访问数据库,导致雪崩、击穿、穿透等问题。因此,新系统上线前需预热缓存,以应对高并发&a…

文献阅读:将条形码神经解剖学与空间转录分析相结合,可以识别投射神经元相关基因

文献介绍 「文献题目」 Integrating barcoded neuroanatomy with spatial transcriptional profiling enables identification of gene correlates of projections 「研究团队」 Anthony M. Zador(美国冷泉港实验室) 「发表时间」 2021-05-10 「发表期…

# #一眼就解密

BUUCTF #一眼就解密 1 下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 注意:得到的 flag 请包上 flag{} 提交 flag{THE_FLAG_OF_THIS_STRING}

MPLS-基础、LSR、LSP、标签、体系结构

MPLS技术 MPLS基础 MPLS:转发数据时,只在网络边缘分析IP报文头,不在每一跳都分析,节约了转发时间。 MPLS:Multiprotocol Label Switching,多协议标签交换骨干网技术。主要应用:VPN、流量工程…

Golang学习系列1-pprof性能调优

1. pprof 简述 一位亦师亦友的话让我记忆犹新,他说“学习一个新事务,应该从三个方面入手what,why,how;且三者的重要程度应该是递减”。所以在本文的第一部分先叙述下pprof的what & why。 1.1 What? pprof是golang自身提供的一种性能分…

【C++入门】初识C++

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

稀疏矩阵的三元组表表示法及其转置

1. 什么是稀疏矩阵 稀疏矩阵是指矩阵中大多数元素为零的矩阵。 从直观上讲,当元素个数低于总元素的30%时,这样的矩阵被称为稀疏矩阵。 由于该种矩阵的特点,我们在存储这种矩阵时,如果直接采用二维数组,就会十分浪费…

开启 Keep-Alive 可能会导致http 请求偶发失败

大家好,我是蓝胖子,说起提高http的传输效率,很多人会开启http的Keep-Alive选项,这会http请求能够复用tcp连接,节省了握手的开销。但开启Keep-Alive真的没有问题吗?我们来细细分析下。 最大空闲时间造成请求…

C++Date类的实现

目录 前言: 1.显示日期 2.构造函数与获取某年某月的日期的函数 3.日期比较 4.日期加减天数 5.日期减日期 6.前置后置与-- 7.完整代码 8.测试 总结: 感谢支持! 前言: 结合了前面的内容的学习,本篇来对之前的…

基于php医院预约挂号系统

摘 要 随着信息时代的来临,过去的管理方式缺点逐渐暴露,对过去的医院预约挂号管理方式的缺点进行分析,采取计算机方式构建医院预约挂号系统。本文通过阅读相关文献,研究国内外相关技术,开发并设计一款医院预约挂号系统…

语义分割交互式智能标注工具 | 澳鹏数据标注平台

随着人工智能应用的大规模落地,数据标注市场在高速增长的同时,也面临着标注成本的挑战。据IDC报告显示:数据标注在AI应用开发过程中所耗费的时间占到了25%,部分医学类应用一条数据的标注成本甚至高达20元。数据精度的高要求、强人…

【Flink技术原理构造及特性】

1、Flink简介 Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理,是业界最顶级的开源流处理引擎。 Flink最适合的应用场景是低时延的数据处理(Data Processin…

爬虫实战三、PyCharm搭建Scrapy开发调试环境

#一、环境准备 Python开发环境以及Scrapy框架安装,参考:爬虫实战一、Scrapy开发环境(Win10Anaconda)搭建 PyCharm安装和破解,参考:爬虫实战二、2019年PyCharm安装(激活到2100年) …

0基础如何进入IT行业?

0基础如何进入IT行业? 简介:对于没有任何相关背景知识的人来说,如何才能成功进入IT行业?是否有一些特定的方法或技巧可以帮助他们实现这一目标?我不知道,我的行业算不算是IT,或者最多是半个IT行…

重磅!openGauss6.0创新版本,带着新特性正式发布了!

📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACD…

从“量子”到分子:探索计算的无限可能 | 综述荐读

在2023年年末,两篇划时代的研究报告在《科学》(Science)杂志上引发了广泛关注。这两篇论文分别来自两个研究小组,它们共同揭示了单氟化钙分子间相互作用的研究成果,成功地在这些分子间创造出了分子量子比特。这一成就不…

算法练习—day1

title: 算法练习—day1 date: 2024-04-03 21:49:55 tags: 算法 categories:LeetCode typora-root-url: 算法练习—day1 网址:https://red568.github.io 704. 二分查找 题目: 题目分析: 左右指针分别为[left,right],每次都取中…

【机器学习】K-近邻算法(KNN)介绍、应用及文本分类实现

一、引言 1.1 K-近邻算法(KNN)的基本概念 K-近邻算法(K-Nearest Neighbors,简称KNN)是一种基于实例的学习算法,它利用训练数据集中与待分类样本最相似的K个样本的类别来判断待分类样本所属的类别。KNN算法…

ArcGIS Pro导出布局时去除在线地图水印

目录 一、背景 二、解决方法 一、背景 在ArcGIS Pro中经常会用到软件自带的在线地图,但是在导出布局时,图片右下方会自带地图的水印 二、解决方法 解决方法:添加动态文本--服务图层制作者名单,然后在布局中选定位置添加 在状…