当前位置:网站首页>【日常训练--腾讯精选50】235. 二叉搜索树的最近公共祖先
【日常训练--腾讯精选50】235. 二叉搜索树的最近公共祖先
2022-07-07 00:03:00 【Puppet__】
题目
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 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 为不同节点且均存在于给定的二叉搜索树中。
代码
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
class Solution {
// 同时找到达p、q的路径,找两个路径的分岔点,充分利用二叉搜索树的性质
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
TreeNode ansNode = root;
while(true){
if(p.val < ansNode.val && q.val < ansNode.val){
ansNode = ansNode.left;
}
else if(p.val > ansNode.val && q.val > ansNode.val){
ansNode = ansNode.right;
}
// 路径分叉了,该点为最近公共祖先
else{
break;
}
}
return ansNode;
}
}
边栏推荐
- What are the common message queues?
- ssm框架的简单案例
- CVE-2021-3156 漏洞复现笔记
- 爬虫练习题(三)
- Educational Codeforces Round 22 B. The Golden Age
- Jhok-zbg2 leakage relay
- JD commodity details page API interface, JD commodity sales API interface, JD commodity list API interface, JD app details API interface, JD details API interface, JD SKU information interface
- SQL query: subtract the previous row from the next row and make corresponding calculations
- Message queue: how to deal with message backlog?
- 分布式事务解决方案之TCC
猜你喜欢
[论文阅读] A Multi-branch Hybrid Transformer Network for Corneal Endothelial Cell Segmentation
[论文阅读] Semi-supervised Left Atrium Segmentation with Mutual Consistency Training
sql优化常用技巧及理解
JVM (XX) -- performance monitoring and tuning (I) -- Overview
论文阅读【Sensor-Augmented Egocentric-Video Captioning with Dynamic Modal Attention】
1. AVL tree: left-right rotation -bite
Sidecar mode
Pytorch builds neural network to predict temperature
常用消息队列有哪些?
pytorch_ 01 automatic derivation mechanism
随机推荐
毕业之后才知道的——知网查重原理以及降重举例
bat 批示处理详解
pytorch_ 01 automatic derivation mechanism
分布式事务解决方案之2PC
[binary tree] binary tree path finding
三级菜单数据实现,实现嵌套三级菜单数据
集群、分布式、微服務的區別和介紹
Modes of optical fiber - single mode and multimode
架构设计的五个核心要素
Paper reading [MM21 pre training for video understanding challenge:video captioning with pre training techniqu]
English grammar_ Noun possessive
In memory, I moved from CSDN to blog park!
基于NCF的多模块协同实例
Make web content editable
Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
Mapbox Chinese map address
微信小程序蓝牙连接硬件设备并进行通讯,小程序蓝牙因距离异常断开自动重连,js实现crc校验位
JD commodity details page API interface, JD commodity sales API interface, JD commodity list API interface, JD app details API interface, JD details API interface, JD SKU information interface
《ClickHouse原理解析与应用实践》读书笔记(6)
ForkJoin最全详解(从原理设计到使用图解)