BST基本性质,LeetCode 235. 二叉搜索树的最近公共祖先

一、题目

1、题目描述

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

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

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

2、接口描述

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {}
};

3、原题链接

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


二、解题报告

1、思路分析

对于二叉搜索树中节点p和q的lca显然满足值在p和q的值之间或者等于任意值

那么当大于p和q的值时,往左子树走

小于时,往右子树走

2、复杂度

时间复杂度: O(N)空间复杂度:O(1)

3、代码详解

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {while(1){if(root->val > p->val && root->val > q->val) root = root->left;else if(root->val < p->val && root->val < q->val) root = root->right;else break;}return root;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李宏毅2023机器学习作业1--homework1——数据集操作

一、下载数据 下载训练数据covid.train.csv 测试数据covid.test.csv !wget -O covid_train.csv https://www.dropbox.com/s/lmy1riadzoy0ahw/covid.train.csv?dl0 !wget -O covid_test.csv https://www.dropbox.com/s/zalbw42lu4nmhr2/covid.test.csv?dl0 二、划分训练集和…

【Spring Boot 3】【JPA】@OneToMany 实现一对多单向关联

【Spring Boot 3】【JPA】@OneToMany 实现一对多单向关联 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学…

初识Lombok

前言 最近读一些公司的业务代码&#xff0c;发现近几年的java项目工程中都使用了lombok&#xff0c;lombok是一个可以自动生成get,set、toString等模板类方法的工具框架&#xff0c;程序再引入lombok后&#xff0c;添加一个注解便可以不写get\set\toString等方法。 Lombok示例…

计算机组成原理(15)----输入/输出系统

目录 一.I/O系统的基本概念 &#xff08;1&#xff09;I/O硬件 &#xff08;2&#xff09;I/O控制方式 1.程序查询方式 2.程序中断方式 3.DMA&#xff08;Direct Memory Access&#xff09;控制方式 4.通道控制方式 &#xff08;3&#xff09;I/O软件 1.I/O指令 2.通…

全志H713/H618方案:调焦电机(相励磁法步进电机)的驱动原理、适配方法

一、篇头 全志H713平台&#xff0c;作为FHD投影的低成本入门方案&#xff0c;其公板上也配齐了许多投影使用的模组&#xff0c;本文即介绍投影仪调焦所用的步进电机&#xff0c;此模组的驱动原理、配制方法、调试方法。因为条件限制&#xff0c;本文采用的是H618香橙派Z3平台&…

面试题vue

目录 vue的响应式原理 路由跳转与拦截 vue2和vue3的生命周期 watch和computed的区别 vue的响应式原理 数据变更&#xff0c;视图自动更新 使用Object.defineProperty()方法来监听属性的变化&#xff0c;实现双向数据绑定。Object.defineProperty()方法可以控制对象的属性访…

Linux-进程-007

1进程 1.1进程基本概念 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程&#xff0c;包括进程的创建&#xff0c;进程的调度&#xff0c;进程的消亡1.2进程相关命令 1.2.1打开任务管理器 【top】&#xff1a;动态查看当前系统…

国企招聘考试------笔试资料-校园招聘

国企招聘考试一直备受广大求职者的关注&#xff0c;因为国企招聘通常具有稳定的岗位、优厚的福利待遇和广阔的发展空间&#xff0c;因此备战国企招聘考试成为许多求职者的重要任务。为了帮助求职者更好地准备国企招聘笔试&#xff0c;我将为你介绍这套校招试题资料。 国企招聘…

Win UI3开发笔记(四)设置主题

Win UI3设置主题过程 参考文章网址&#xff1a;https://blog.csdn.net/white_night_SZTU/article/details/132819719 核心代码&#xff1a; rootElement.RequestedTheme ElementTheme.Dark; //这和在前端设置控件的 RequestedTheme"Dark"属性是一样的结果&#xf…

TensorFlow中的分布式深度学习

在处理复杂问题和大规模深度学习问题时&#xff0c;分布式深度学习为我们提供了突破口。它允许我们利用多个设备和计算资源的力量&#xff0c;更好地训练我们的模型。讨论这个话题时&#xff0c;不得不提的是 TensorFlow&#xff0c;它通过 tf.distribute 包为分布式学习提供了…

Apriori 与 FP-growth 算法

关联规则挖掘:Apriori 与 FP-growth 算法 关联规则挖掘概述Apriori 算法基本原理应用实例FP-growth 算法基本原理应用实例其他机器学习算法:机器学习实战工具安装和使用关联规则挖掘是数据挖掘领域中的一个重要任务,旨在发现数据集中不同项之间的关联关系。Apriori 算法和 F…

面试精选-前端

1、防抖 防抖 (Debouncing) 的含义是指在一定时间内&#xff0c;多次触发同一个事件&#xff0c;只执行最后一次操作。例如&#xff0c;当我们在搜索框中输入关键词时&#xff0c;输入框会不断触发oninput事件&#xff0c;如果每次输入都去请求服务器获取数据&#xff0c;会造…

idea集成git(实用篇)

0.Git常用命令 Git常用命令-CSDN博客 1.下载git Git - Downloads 一路傻瓜式安装即可&#xff08;NEXT&#xff09; 2.软件测试 在Windows桌面空白处&#xff0c;点击鼠标右键&#xff0c;弹出右键菜单 Git软件安装后&#xff0c;会在右键菜单中增加两个菜单 Git GUI He…

Go编译到linux运行出现 cannot execute binary file

1.初学Go就在windows上写了个"Hello,World!",在windown上编译了一下&#xff0c;生成了可执行文件。运行无问题 go build text.go .\text.exe Hello,World!2.但是按照网上的教程进行生成linux的可执行文件时出现报错 set CGO_ENABLED0 set GOOSlinux set GOARCHam…

程序媛的mac修炼手册-- 2024如何彻底卸载Python

啊&#xff0c;前段时间因为想尝试chatgpt的API&#xff0c;需要先创建一个python虚拟环境来安装OpenAI Python library. 结果&#xff0c;不出意外的出意外了&#xff0c;安装好OpenAI Python library后&#xff0c;因为身份认证问题&#xff0c;根本就没有获取API key的权限…

Git命令操作

什么是Git&#xff1f; Git是⼀个免费的&#xff0c;开源的分布式版本控制软件系统 git区域 存储区域&#xff1a;Git软件⽤于存储资源得区域。⼀般指得就是.git⽂件夹 ⼯作区域&#xff1a;Git软件对外提供资源得区域&#xff0c;此区域可⼈⼯对资源进⾏处理。 暂存区&am…

Escalate_Linux(3)--通过读取密码文件shadow来破解root用户的口令实现提权

通过读取密码文件shadow来破解root用户的口令实现提权 通过读取密码文件/etc/shadow来破解root用户的口令 ls -l /etc/shadow 普通用户无查看shadow权限 echo "cat /etc/shadow" >/tmp/ls ​ chmod 755 /tmp/ls ​ export PATH/tmp:$PATH ​ /home/user5/script…

Ubuntu中Python包的寻找路径

文章目录 一、Pyhon包的查找位置二、某个Python特定包的查找位置参考 一、Pyhon包的查找位置 ▶ [~]$ python -m site sys.path [/home/wangji,/usr/lib/python310.zip,/usr/lib/python3.10,/usr/lib/python3.10/lib-dynload,/home/wangji/.local/lib/python3.10/site-packag…

[C++]c++冒泡排序示例

冒泡排序是一种计算机科学领域的较简单的排序算法&#xff0c;这篇文章主要介绍了c冒泡排序示例,需要的朋友可以参考下 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff0c;是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个…

019 Spring Boot+Vue 电影院会员管理系统(源代码+数据库+文档)

部分代码地址&#xff1a; https://github.com/XinChennn/xc019-cinema 一、系统介绍 cinema项目是一套电影院会员管理系统&#xff0c;使用前后端分离架构开发包含管理员、会员管理、会员卡管理、电影票、消费记录、数据统计等模块 二、所用技术 后端技术栈&#xff1a; …