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

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

根据二叉搜索树的特性,我们使用中序遍历,保证节点按从小到大的顺序遍历。既然要验证,就是看在中序遍历的条件下,各个节点的大小关系是否符合二叉搜索树的特性。双指针法和适合解决这个问题,一个指针指向当前节点,另一个指针指向前一个节点(指的是按照中序遍历顺序的前一个节点),不断后移两个指针,两两进行比较。这只是大致思路,大家可以结合我的代码以及注释加以理解。

代码及注释如下:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* pre = NULL;//题目属于要验证二叉树的特性,递归函数返回值用布尔类型3比较适合bool isValidBST(TreeNode* root) {if(root == NULL) return true;//递归左子树bool judge1 = isValidBST(root -> left);if(pre == NULL){pre = root;//将pre从空节点移动到叶子结点}else{if(root -> val > pre -> val){pre = root;//后移pre}else{return false;}}//递归右子树bool judge2 = isValidBST(root -> right);return judge1 && judge2;}
};

http://www.lryc.cn/news/527051.html

相关文章:

  • vue3 vue2区别
  • IOS 自定义代理协议Delegate
  • 消息队列篇--扩展篇--码表及编码解码(理解字符字节和二进制,了解ASCII和Unicode,了解UTF-8和UTF-16,了解字符和二进制等具体转化过程等)
  • 2024年度总结——理想的风,吹进现实
  • 代码工艺:实践 Spring Boot TDD 测试驱动开发
  • 深度学习|表示学习|卷积神经网络|通道 channel 是什么?|05
  • PCDN的虚拟机与云主机区别
  • 计算机网络 (57)改进“尽最大努力交付”的服务
  • Redis 详解
  • 如何解压rar格式文件?8种方法(Win/Mac/手机/网页端)
  • 网络仿真工具Core环境搭建
  • Coze插件开发之基于已有服务创建并上架到扣子商店
  • ORACLE-主备备-Failover
  • wampserver + phpstrom 调试配置
  • Java Web-Cookie与Session
  • Couchbase UI: Dashboard
  • 每日 Java 面试题分享【第 13 天】
  • 探究 Facebook 隐私安全发展方向,未来走向何方?
  • 第三十一周学习周报
  • 白嫖一个可以公网访问、带评论和图床的博客系统
  • 定时器、计数器
  • Ubuntu Server连接wifi
  • 关于MySQL InnoDB存储引擎的一些认识
  • 深入剖析SpringBoot启动机制:run()方法详尽解读
  • Nginx中部署多个前端项目
  • 1688寻源通:赋能跨境贸易的高效业务平台
  • JVM深入学习(一)
  • Qt Creator 15.0.0如何更换主题和字体
  • “大模型横扫千军”背后的大数据挖掘--浅谈MapReduce
  • shallowRef和shallowReactive的用法以及使用场景和ref和reactive的区别