当前位置: 首页 > 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/news/317860.html

相关文章:

  • 使用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】数据类型
  • react hooks--useCallback
  • 误删系统引导如何恢复?如何创建系统引导?
  • Vue 内存泄漏分析:如何避免开发过程中导致的内存泄漏问题
  • Appium高级话题:混合应用与原生应用测试策略
  • Mysql 常用方法和函数(查询)
  • 数据结构应试-树和二叉树
  • 这个浏览器插件:提高测试效率且好用!
  • Haskell网络编程:代理服务器的高级使用技巧
  • mac安装JetBtains全家桶新版本时报错:Cannot start the IDE
  • GitLab将会持续支持FluxCD