【Leetcode】235. 二叉搜索树的最近公共祖先

文章目录

  • 题目
  • 思路
  • 代码
  • 结果

题目

题目链接
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

示例 1:
在这里插入图片描述
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
出: 6
解释: 节点 2 和节点 8 的最近公共祖先是 6。

示例 2:
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。

说明:

  • 所有节点的值都是唯一的。
  • p、q 为不同节点且均存在于给定的二叉搜索树中。

思路

我们可以使用遍历的方式寻找通往 p 和 q 节点路径。我们可以考虑将这两个节点放在一起遍历,从而避免存储路径所需的空间。
遍历过程如下:

  1. 从根节点开始遍历。
  2. 如果当前节点的值大于 p 和 q 的值,则 p 和 q 应该在当前节点的左子树,将当前节点移动到其左子节点。
  3. 如果当前节点的值小于 p 和 q 的值,则 p 和 q 应该在当前节点的右子树,将当前节点移动到其右子节点。
  4. 如果当前节点的值不满足上述两条要求,则当前节点是分岔点。此时,p 和 q 要么在当前节点的不同子树中,要么其中一个就是当前节点。

这种方法省去了存储路径所需的空间,提高了效率。

代码

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root == NULL) return NULL;if (root->val == p->val || root->val == q->val) return root;TreeNode* left = lowestCommonAncestor(root->left, p, q), * right = lowestCommonAncestor(root->right, p, q);if (left == NULL) return right;if (right == NULL) return left;return root;}
};

结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python爬虫-爬取B站番剧封面

本文是本人最近学习Python爬虫所做的小练习。如有侵权,请联系删除。 页面获取url 代码 import requests import os import re# 创建文件夹 path os.getcwd() /images if not os.path.exists(path):os.mkdir(path)# 当前页数 page 1 # 总页数 total_page 2# 自动…

基于ELFBoard开发板的车牌识别系统

本项目采用的是ElfBoard ELF1开发板作为项目的核心板,主要实现的功能为通过USB 摄像头对车牌进行识别,如果识别成功则会亮绿灯,并将识别的车牌号上传到手机APP上面,车牌识别的实现是通过百度OCR进行实现,手机APP是用Ja…

五种多目标优化算法(MOCS、MOFA、NSWOA、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤: 1. 定义问题:首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数,这些目标函数可能…

Linux基础命令—系统服务

基础知识 centos系统的开机流程 1)通电 2)BIOS硬件检查 3)MBR引导记录 mbr的引导程序 加载引导程序 让硬件加载操作系统内核 MBR在第一个磁盘第一个扇区 总大小512字节 mbr: 1.引导程序: 占用446字节用于引导硬件,加载引导程序 2.分区表: 总共占…

数学建模【插值与拟合】

一、插值与拟合简介 在数学建模过程中,通常要处理由试验、测量得到的大量数据或一些过于复杂而不便于计算的函数表达式,针对此情况,很自然的想法就是,构造一个简单的函数作为要考察数据或复杂函数的近似。插值和拟合就可以解决这…

GitHub上的GCN

在GitHub上下载GCN代码,可以跑通 https://github.com/tkipf/pygcn

【精简版】Ubuntu/Linux Anaconda 命令行终端安装

网上重复内容很多,大都啰里啰嗦,特作此笔记。 【精简版】Ubuntu/Linux Anaconda 命令行安装 1 下载安装包1.1 寻找适配版本安装包1.2 下载 2 运行安装程序3 设置安装路径4 添加环境变量并运行4.1 环境变量4.2 运行 5 验证安装成功感谢及参考博文 1 下载…

【设计模式】5种创建型模式详解

创建型模式提供创建对象的机制,能够提升已有代码的灵活性和复用性。 常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。不常用的有:原型模式。一、单例模式 1.1 单例模式介绍 1 ) 定义 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模…

自定义搭建管理系统

最近使用自己搭建的脚手架写了一个简易管理系统,使用webpackreactantd,搭建脚手架参考: 使用Webpack5搭建项目(react篇)_babel-preset-react-app-CSDN博客 搭建的思路: 1. 基建布局,使用antd的…

Spring ReflectionUtils 反射工具介绍和使用

一、ReflectionUtils 在 Java 中,反射(Reflection)是一种强大的机制,允许程序在运行时动态地检查类、获取类的信息、调用类的方法、访问或修改类的属性等。Java 的反射机制提供了一组类和接口,位于 java.lang.reflect…

光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测

光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测 目录 光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测预测效果基本描述模型简介程序设计参考资料 预测效果 基本描述 Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测 运行环境: Matla…

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效?

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了,针对特定领域较小的语言模型是否与较大的模型同样有效? 当大家都在研究大模型(LLM)参数规模达到百亿甚至千亿级别的同时,小巧且兼具高性能的小…

多目标追踪概述

1. 目标跟踪分类 单目标跟踪:在视频的初始帧画面上框出单个目标,预测后续帧中该目标的大小与位置多目标跟踪:追踪多个目标的大小和位置,且每一帧中目标的数量和位置都可能变化 2. 多目标跟踪目前的主要问题 形态变化&#xff1a…

Android 获取USB相机支持的分辨率有多少

直接上代码 private fun getCamera() {// 获取系统相机服务val cameraManager requireContext().getSystemService(Context.CAMERA_SERVICE) as? CameraManagerif (cameraManager ! null) {// 在这里进行相机管理器的操作// 获取相机设备的 ID(这里假设使用第一个相…

小封装高稳定性振荡器新系列(2.0 x 1.6 mm) 用于光学应用

小封装高稳定性振荡器新系列(2.0 x 1.6 mm) 用于光学应用,兼容OIF标准 Sg2016egn / sg2016vgn, sg2016ehn / sg2016vhn 来自光模块市场的需求爱普生提供SG2016系列解决方案SG2016系列:高稳定性,低抖动晶体振荡器规格尺寸,框图,引…

Java零基础 - 关键字 instanceof

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

无限创意之旅:深度挖掘Sora AI视频模型的可能性【文章底部添加可得内推码汇总表】

目录 引言 第一部分:Sora AI视频模型的特性 第二部分:Sora在创意领域的应用 第三部分:Sora对影视产业的影响 【文章底部添加可得内推码汇总表】 引言 21世纪,随着AI人工智能的迅猛发展,AI视频模型正成为数字创意领…

17.材质和外观

1.图形学中的材质 在图形学中,材质(Material)是用来描述物体外观和表面特性的属性集合。它包含了控制光的反射、折射、吸收以及其他光学效果的信息,从而决定了物体在渲染过程中的外观。 渲染方程中那一项和材质有关? …

HSE化工应急安全生产管理平台:信息化、流程化的安全管理新模式

随着化工行业的快速发展,安全生产管理日益成为企业发展的关键所在。在这一背景下,HSE化工应急安全生产管理平台应运而生,以信息平台为载体,数据驱动、风险管理为中心,致力于实现安全生产的动态、实时和智能化管理。本文…

【工具分享】批量查找文件并移动复制,咕嘎批量文件清单快速查找搜索文件,比bat批量查找文件并复制更简单一些

在工作中,像电商或者照相馆以及政府工程的工作人员,整理文件时,我们经常遇到批量查找部分文件,比如在10万个文件内查找5000个文件,把5000个文件分离出来,存在另外一个地方 如果是在电脑中挨个搜那要搜很久&…