当前位置:网站首页>Leetcode 刷题日记 剑指 Offer II 053. 二叉搜索树中的中序后继
Leetcode 刷题日记 剑指 Offer II 053. 二叉搜索树中的中序后继
2022-07-28 05:26:00 【JETECHO】
原题链接(https://leetcode.cn/problems/P5rCT8)
题目描述
给定一棵二叉搜索树和其中的一个节点 p ,找到该节点在树中的中序后继。如果节点没有中序后继,请返回 null 。节点 p 的后继是值比 p.val 大的节点中键值最小的节点,即按中序遍历的顺序节点 p 的下一个节点。
示例1

输入:root = [2,1,3], p = 1
输出:2
示例2

输入:root = [5,3,6,2,4,null,null,1], p = 6
输出:nul
数据约束
- p为树的节点
- 数中节点的数目范围是[1,10^4]
- -10^5 <= Node.val <= 10^5
- 树中各节点的值均保证唯一。
思路
二叉搜索树是一种特殊的二叉树,对于一个节点,它的值一定大于其左子树的任何一个值,它的右子树的任何一个值都要大于它,几左子树<父节点<右子树。利用这个特性再查找二叉树的时候并不需去扫描每一个节点,既然题目要找最小的大于它的那么就是能走左子树就必须走左子树,走到右子树之后也需要去核验左子树否则就是右子树。如果右子树找到底都没有符合的那就没有任何一个数据符合了。同时因为需要匹配是一个树节点,那么如果这个节点有右子树那么一定是从那个右子树开始向左子树走得到的节点,不然才需要从根节点走。
如例2的访问流程应该是
首先p没有右子树所有从头开始
由于根节点的值小于6所以应该走右子树
最后得到null
假设将例2的p改为3这个节点那结果就不一样了
首先,3是有右子树的所以可以走右子树
然后右子树没有左子树所以得到4
假设有一个二叉搜索树如图
假设P为50
首先p没有右子树所以需要从根节点开始。
首先根节点的值小于50所以需要向右子树走,既走到65节点上
65大于50所以需要向左走,但是左子树的值是50不大于50所以左子树也走到了头,因此得到了结果65
代码
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */
class Solution {
public TreeNode inorderSuccessor(TreeNode root, TreeNode p) {
TreeNode ans = null;
if (p.right != null) {
ans = p.right;
while (ans.left != null) {
ans = ans.left;
}
}
while (root != null) {
if (root.val > p.val) {
ans = root;
root = root.left;
} else {
root = root.right;
}
}
return ans;
}
}
边栏推荐
- 【学习笔记】驱动
- valgrind工具
- Pyppeteer is recognized to bypass detection
- scrapy 命令
- What are the open earphones? Four types of air conduction earphones with excellent sound quality are recommended
- Icc2 (III) clock tree synthesis
- Perl introductory learning (XI) file operation
- 量化交易机器人系统开发
- Hugging face's problem record I
- 正反斜杠笔记
猜你喜欢
随机推荐
根据IP地址和子网掩码求主机所在的网络地址和广播地址
刷题记录----二叉树的层序遍历
自定义组件--插槽
QT custom sliding button (beautiful and easy to use)
使用wampserver3.2.6时切换中文时造成启动失败
What's a good gift for your girlfriend on Chinese Valentine's day? Boys who can't give gifts, look!
如何模拟实现strcpy库函数
Perl Introduction (10) formatted output
【学习笔记】编码能力
qt自定义滑动按钮(美观且使用方便)
[c语言]--一步一步实现扫雷小游戏
什么气传导蓝牙耳机好、配置比较高的气传导耳机推荐
ubunut 服务器上传下载文件
自定义组件--纯数据字段&组件的生命周期
2022-05-24 use of spiel
2022-07-19 Damon database connection instance, execution script, system command
量化交易机器人系统开发
气传导耳机哪个好、性价比最高的气传导耳机推荐
2022-06-07 responsebodyadvice caused the spring frame problem in swagger
STM32的IAP跳转相关bug经历









