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

【C++二叉树】236.二叉树的最近公共祖先

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

思路分析:

公共祖先满足的特征:

  1. p是q的孩子,则q是祖先,反之亦然。
  2. p和q是“我”的左子树和右子树中的节点,则“我”是祖先。(如题目中给的示例)

情况一:如果树为二叉搜索树

  1. 直接比值,一个比“我”小,一个比“我”大,则“我”就是祖先。
  2. 都比我小,则递归到左子树中继续比较查找。
  3. 都比“我”大,则递归到右子树中继续比较查找。

情况二:如果为三叉链

  1. 类似于链表找交点问题

情况三:如果为普通二叉树

  1.  一个在“我”的左子树,一个在“我”的右子树,则“我”是祖先。
  2. 都在“我”的左子树,则递归到左子树中查找。
  3. 都在“我”的右子树,则递归到右子树中查找。

 如果细分的话可以分为以上三种情况,但是本题就是一个普通二叉树,所以我们考虑第三种情况就可以了。

代码实现:

这道题的命名风格很重要,在判断p、q的位置时,分别定义了四个布尔值,命名清晰,读起来也很好理解。


http://www.kler.cn/a/317860.html

相关文章:

  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性
  • ❤React-React 组件基础(类组件)
  • LeetCode【0036】有效的数独
  • Ai创作新风标!仅需三步,利用ai工具免费制作抖音爆款的动物融合视频(含完整的步骤)
  • 谷歌浏览器的自动翻译功能如何开启
  • 后端:Aop 面向切面编程
  • 使用three.js+vue3完成无人机上下运动
  • 汽车售后诊断ECU参数分析
  • 寄宿制学校自闭症教育:为每个孩子创造奇迹
  • spring boot项目对接人大金仓
  • 线性代数学习笔记~
  • 初识JavaScript
  • 【图像压缩与重构】基于BP神经网络
  • 新版torch_geometric不存在uniform、maybe_num_nodes函数问题(Prune4ED论文报错解决)
  • python request库的使用
  • 深度学习领域相关的专业术语(附带音标解释)
  • EtherCAT转Profient协议网关简述
  • MySQL函数及存储过程
  • 视频制作软件哪个好?前十名推荐!
  • 云手机的便捷性和安全性体现在哪?
  • redisson 延迟队列实现任务过期监听
  • Hbase操作手册
  • git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样
  • 阅读记录:Gradient Episodic Memory for Continual Learning
  • 十三 系统架构设计(考点篇)
  • 【python】数据类型