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

二叉搜索树的最近公共祖先

二叉搜索树的最近公共祖先-力扣 235 题

求二叉搜索树最近公共祖先(祖先也包括自己)

前提:

1.节点值唯一

2.p和q都存在

要点:若 p,q 在 ancestor 的两侧,则 ancestor 就是它们的最近公共祖先

解题思路:

/*
            __ 6 __
           /       \
          2         8
         / \       / \
        0   4     7   9
           / \
          3   5
          比如:2与8的祖先有:2、8、6  而6是公共祖先也是最近的
          4与5的祖先有:4、5、2、6  公共祖先有4 2 6   最近的祖先是4
          我们利用这个结论:待查找节点 p q 在某一节点的两侧,那么此节点就是最近的公共祖先
          举一个特殊案例:4与5的祖先有:4、5、2、6  公共祖先有4 2 6 
          先判断6的两侧是不是4与5 如果不是 就进行下一个祖先两侧是否是4与5
          当然在这里,到后面判断4两侧是否是4与5的时候,我们也可以看作是在两侧 
     */

/*__ 6 __/       \2         8/ \       / \0   4     7   9/ \3   5比如:2与8的祖先有:2、8、6  而6是公共祖先也是最近的4与5的祖先有:4、5、2、6  公共祖先有4 2 6   最近的祖先是4我们利用这个结论:待查找节点 p q 在某一节点的两侧,那么此节点就是最近的公共祖先举一个特殊案例:4与5的祖先有:4、5、2、6  公共祖先有4 2 6 先判断6的两侧是不是4与5 如果不是 就进行下一个祖先两侧是否是4与5当然在这里,到后面判断4两侧是否是4与5的时候,我们也可以看作是在两侧 */
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {TreeNode ancestor = root;//ancestor.val > p.val && ancestor.val > q.val:p和q在当前节点的左边//ancestor.val < p.val && ancestor.val < q.val:p和q在当前节点的右边while (ancestor.val > p.val && ancestor.val > q.val || ancestor.val < p.val && ancestor.val < q.val) {if (ancestor.val > p.val) {//这个时候祖先值要开始靠近p或者qancestor = ancestor.left;} else {ancestor = ancestor.right;}}return ancestor;
}

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

相关文章:

  • LuatOS-SOC接口文档(air780E)-- i2c - I2C操作
  • 帝国cms改目录后打不开,帝国cms改目录生成后还是404
  • 计算机毕业设计选什么题目好?springboot智慧养老中心管理系统
  • 创建一个基本的win32窗口
  • 如何在 Spring Boot 中使用 WebSocket
  • ubuntu2023装完显卡驱动和CUDA CUDNN开机只有下划线闪烁
  • MySQL三种安装方法(yum安装、编译安装、二进制安装)
  • 《视觉 SLAM 十四讲》第 7 讲 视觉里程计1 【如何根据图像 估计 相机运动】【特征点法】
  • 9. 一个SpringBoot项目运行
  • 如何实现chatGPT批量问答,不用token
  • Arduino驱动LIS2DH三轴加速度传感器(惯性测量传感器篇)
  • B 开组会(可持久线段树+树剖) 武汉大学2023年新生程序设计竞赛(同步赛)
  • vue的axios方法
  • gitlab docker部署,备份,恢复。附踩坑记录
  • 2023品牌新媒体矩阵营销洞察报告:流量内卷下,如何寻找增长新引擎?
  • HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Toggle
  • redis,mongoDB,mysql,Elasticsearch区别
  • 什么是软件测试架构师?
  • 安科瑞ARB5系列弧光保护装置,智能电弧光保护,保障用电安全
  • 查找算法——二分查找法
  • 大数据——Spark Streaming
  • graphviz 绘制二叉树
  • STM32 PA15/JTDI 用作普通IO,烧录口不能使用问题解决
  • 【ARM Coresight 系列文章 9 -- ETM 介绍 1】
  • 设计模式 - 中介者模式
  • HttpServletRequest对象与RequestDispatcher对象
  • Spring Boot启动流程
  • ARM day5
  • 流程引擎概述及组成
  • 定时任务Apscheduler实践案例