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

C++递归实现验证⼆叉搜索树

C++递归实现验证⼆叉搜索树

文章目录

  • C++递归实现验证⼆叉搜索树
    • 题目链接
    • 题目描述
    • 解题思路
    • C++算法代码:

题目链接

98. 验证二叉搜索树 - 力扣(LeetCode)

题目描述

给你⼀个⼆叉树的根节点root,判断其是否是⼀个有效的⼆叉搜索树。

有效⼆叉搜索树定义如下:

  • 节点的左⼦树只包含⼩于当前节点的数。
  • 节点的右⼦树只包含⼤于当前节点的数。
  • 所有左⼦树和右⼦树⾃⾝必须也是⼆叉搜索树。

解题思路

利用中序遍历;

后序遍历按照左⼦树、根节点、右⼦树的顺序遍历⼆叉树的所有节点,通常⽤于⼆叉搜索树相关题⽬。

算法思路:

如果⼀棵树是⼆叉搜索树,那么它的中序遍历的结果⼀定是⼀个严格递增的序列。

因此,我们可以初始化⼀个⽆穷⼩的全区变量,⽤来记录中序遍历过程中的前驱结点。那么就可以在
中序遍历的过程中,先判断是否和前驱结点构成递增序列,然后修改前驱结点为当前结点,传⼊下⼀
层的递归中。

算法流程:

  1. 初始化⼀个全局的变量**prev,⽤来记录中序遍历过程中的前驱结点的val**;

  2. 中序遍历的递归函数中

a.设置递归出⼝:root==nullptr的时候,返回true

b. 先递归判断左⼦树是否是⼆叉搜索树,⽤**retleft**标记;

c.然后判断当前结点是否满⾜⼆叉搜索树的性质,⽤**retcur**标记:

  • 如果当前结点的**val⼤于prev,说明满⾜条件,retcur改为true**;
  • 如果当前结点的val⼩于等于**prev,说明不满⾜条件,retcur改为false**;

d.最后递归判断右⼦树是否是⼆叉搜索树,⽤**retright**标记;

  1. 只有当**retleft、retcur和retright都是true的时候,才返回true**。

C++算法代码:

class Solution
{
long prev = LONG_MIN;
public:
bool isValidBST(TreeNode* root)
{
if(root == nullptr) return true;
bool left = isValidBST(root->left);
// 剪枝
if(left == false) return false;
bool cur = false;
if(root->val > prev)
cur = true;
// 剪枝
if(cur == false) return false;
prev = root->val;
bool right = isValidBST(root->right);
return left && right && cur;
}
};
http://www.lryc.cn/news/213013.html

相关文章:

  • ♥ uniapp 环境搭建
  • 京东商品链接获取京东商品评论数据(用 Python实现京东商品评论信息抓取),京东商品评论API接口,京东API接口
  • docker容器中安装ROS1/ROS2(不用配任何环境,10分钟搞定)
  • 如何解决ssh登录报错WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  • Mysql5.7安装配置详细图文教程(msi版本)
  • 运行dl4j-examples的主要一些依赖
  • PSRAM伪静态RAM芯片APS6404L
  • 低级语言汇编真的各个面不如汇编吗?
  • PyG edge index 转换回 邻接矩阵
  • JavaSE19——file文件类
  • mongodb记录
  • Go语言:数组和切片
  • OPENCV 闭运算实验示例代码morphologyEx()函数
  • UE4 体积云制作 学习笔记
  • visual studio编译QtAV
  • 喜报!CACTER邮件安全网关荣获2023鲲鹏应用创新大赛广东赛区三等奖
  • Spark On Hive原理和配置
  • 驱动第十天
  • 工作中常用的git命令,千万不能忘
  • 计组之存储系统
  • 【Jenkins】新建任务FAQ
  • 生产环境使用boost::fiber
  • TSINGSEE青犀AI视频识别技术+危化安全生产智慧监管方案
  • 小程序request请求封装
  • Easy Javadoc插件的使用教程
  • 一篇文章让你弄懂Java中的方法
  • SAP MM学习笔记39 - MRP(资材所要量计划)
  • 总线类设备驱动——IIC
  • MES 的价值点之动态调度
  • dfs序及相关例题