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

LeetCode236.最近的公共祖先

在这里插入图片描述

求解最近公共祖先的算法

分为两个步骤:

  1. 求出两节点路径
  2. 取两路径上最后一个相同的节点(该节点即为p,q节点的最近公共祖先)

节点路径的算法设计与实现

求节点路径即输入二叉树根节点与待求节点返回根节点到该节点路径上的所有节点。

具体有如下几个要点:

  1. 我们需要设置一个栈,存储最终的节点路径。找到该节点时,从栈底到栈顶存储的节点即为从根节点到该节点的路径。
    在这里插入图片描述
  2. 需要通过遍历算法,从根节点遍历至该节点。树的遍历算法可以是递归的深度优先搜索算法。找到该节点后就结束搜索。
    在这里插入图片描述
  3. 将遍历过程中遇到的节点按照顺序存储到栈中。节点遍历完成之后需要弹出栈,从而保证栈中存储的节点时根节点到当前遍历节点路径上的节点。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

具体代码

深度优先搜索寻找路径上的节点

在这里插入图片描述

利用两节点的路径寻找最近公共祖先

在这里插入图片描述
在这里插入图片描述

测试主程序

在这里插入图片描述
在这里插入图片描述
参考资料
算法与数据结构,二叉树,程序员面试高频题,最近的公共祖先

http://www.lryc.cn/news/56015.html

相关文章:

  • 【springcloud 微服务】Spring Cloud Alibaba整合Sentinel详解
  • ASP医院管理系统—病历管理系统的设计与实现
  • 【蓝桥杯】动态规划(dp)入门!| 入门动态规划的正确方式! ——学习笔记
  • 元宇宙与网络安全
  • Pod控制器之hpa
  • 发现一个白嫖GPT4.0的方法!真的是完胜3.5!
  • 数据结构之第四章、ArrayList和顺序表
  • webase全家桶搭建教程过程记录+bug解决
  • openEuler Linux 部署 HadoopHA
  • React-Hooks----useEffect()
  • JavaWeb基础-汇总
  • Niuke:JZ36.二叉树与双向链表
  • javaScript---读懂promise、async/await
  • 【Linux】TCP编程流程
  • SuperMap iDesktop 下载安装,生成本地瓦片,以及发布本地瓦片服务
  • 【ONE·Data || 常见排序说明】
  • 本节作业之跟随鼠标的天使、模拟京东按键输入内容、模拟京东快递单号查询
  • ChatGPT 被大面积封号,到底发生什么了?
  • 教你精通JavaSE语法之第十一章、认识异常
  • display、visibility、opacity隐藏元素的区别
  • Linux Shell 实现一键部署tomcat10+java13
  • 软硬皆施,WMS仓库管理系统+PDA,实现效率狂飙
  • DJ3-2 传输层(第二节课)
  • FrIf-FrIf功能模块概述和与底层驱动的交互
  • 【LeetCode】前 K 个高频元素(堆)
  • Java ---多态
  • 13个程序员常用开发工具用途推荐整理
  • TCP分包和粘包
  • 手撕深度学习中的优化器
  • 英文打字小游戏