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

leetcode原题 后继者:找出二叉搜索树中指定节点的“下一个”节点

题目:

设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。

如果指定节点没有对应的“下一个”节点,则返回null

示例:

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

  2
 / \
1   3

输出: 2

解题思路:

我们可以中序遍历二叉树,在找到p节点后,做一个标记,当遍历到它的后继时,发现标记为真,那么当前节点就是节点p的下一个节点,返回即可。

源代码如下:

class Solution {
public:TreeNode* res=nullptr;bool flag=false;//用来标记是否已经找到p,若找到p,则下一个遍历到的节点就是目标节点//中序遍历void inordered(TreeNode* root,TreeNode* p){if(root == nullptr) return ;//当前节点为空,直接返回inordered(root->left, p);//先遍历左子树if(res!=nullptr) return;//如果res不为空,说明已经找到目标节点//如果当前节点=p,则将flag更新if(root == p){flag=true;}//如果flag为真,则说明当前节点就是目标节点else if(flag){//将节点赋值给res,并返回res=root;return;}//继续遍历右子树inordered(root->right, p);}TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {if(root==nullptr) return nullptr;//对二叉树进行中序遍历,在遍历过程中找目标节点inordered(root, p);return res;}
};

 简化一下:

因为是中序遍历,那么p的下一个节点,一定是中序序列中,第一个比p节点大的节点,所以找到第一个比p大的节点即可。


源代码如下:

class Solution {
public:TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {if(root==nullptr) return nullptr;TreeNode* res=inorderSuccessor(root->left,p);if(res != nullptr) return res;if(root->val>p->val) return root;return inorderSuccessor(root->right,p);}
};
http://www.lryc.cn/news/129100.html

相关文章:

  • pyqt5 QlineEdit 如何设置只能输入数字
  • ubuntu中安装python
  • LeetCode150道面试经典题-- 快乐数(简单)
  • 科研论文配图----第一章笔记
  • OpenHarmony Meetup 广州站 OpenHarmony正当时—技术开源
  • 如何使用PHP Smarty模板实现静态页面生成
  • 【 Cocos Creator 项目实战】益智游戏《2048》(附带完整源码工程)
  • 剑指Offer68-II.二叉树的最近公共祖先 C++
  • 【JAVA】我们该如何规避代码中可能出现的错误?(一)
  • openLayers实战(八):坐标系及其转换
  • DAY06_SpringBoot—简介基础配置yaml多环境开发配置整合第三方技术
  • 无涯教程-Perl - setpwent函数
  • 代码随想录-数组篇
  • vue3+element-plus表格默认排序default-sort失效问题
  • CH32V203 单片机 I2C 使用
  • 链表OJ题
  • Llama 2免费托管及API提供
  • 回到未来:使用马尔可夫转移矩阵分析时间序列数据
  • vue element 多图片组合预览
  • Vue2集成Echarts实现可视化图表
  • 3 Python的数据类型
  • new String()到底创建了几个对象
  • 第五十五天
  • 【推荐】深入浅出benan的生命周期
  • mysql使用redis+canal实现缓存一致性
  • 9.利用matlab完成 泰勒级数展开 和 符号表达式傅里叶变换和反变换 (matlab程序)
  • 文字点选验证码识别(上)-YOLO位置识别
  • ssh远程连接慢解决方法
  • 10.4K Star!程序员为程序员针对性优化的开源免费笔记
  • ppt中线材相交接的地方,如何绘画