力扣 98. 验证二叉搜索树

题目来源:https://leetcode.cn/problems/validate-binary-search-tree/description/

 

 C++题解1:中序遍历,递归法。获取数组,如果是递增则返回true,否则返回false。

class Solution {
public:void zhongxu(TreeNode* node, vector<int>& sto){if(!node) return;zhongxu(node->left, sto);sto.push_back(node->val);zhongxu(node->right, sto);  return;      }bool isValidBST(TreeNode* root) {if(!root) return true;vector<int> sto;zhongxu(root, sto);int len = sto.size();for(int i = 1; i < len; i++){if(sto[i] <= sto[i-1]) return false;}return true;}
};

C++题解2:中序遍历,递归法。不断更新最大值,初始化为最左最下层的节点值,按照中序遍历可以更新为上一节点的值。

class Solution {
public:TreeNode* pre = NULL; // 用来记录前一个节点bool isValidBST(TreeNode* root) {if (root == NULL) return true;bool left = isValidBST(root->left);if (pre != NULL && pre->val >= root->val) return false;pre = root; // 记录前一个节点bool right = isValidBST(root->right);return left && right;}
};

C++题解3:迭代法。

class Solution {
public:bool isValidBST(TreeNode* root) {stack<TreeNode*> st;TreeNode* cur = root;TreeNode* pre = NULL; // 记录前一个节点while (cur != NULL || !st.empty()) {if (cur != NULL) {st.push(cur);cur = cur->left;                // 左} else {cur = st.top();                 // 中st.pop();if (pre != NULL && cur->val <= pre->val)return false;pre = cur; //保存前一个访问的结点cur = cur->right;               // 右}}return true;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3870.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指 Offer !37. 序列化二叉树

剑指 Offer 37. 序列化二叉树 请实现两个函数&#xff0c;分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑&#xff0c;你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序…

删除PDF页面的10个操作工具方法分享

PDF被广泛用于各种目的&#xff0c;包括共享学术文件、专业报告&#xff0c;甚至个人文件。然而&#xff0c;有时您可能会发现需要从PDF中删除一些页面。虽然有很多付费软件可供选择&#xff0c;但也有很多免费删除PDF页面的方法。在这篇文章中&#xff0c;我们将讨论10种免费删…

C语言:猜名次

题目&#xff1a; 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果&#xff1a; A选手说&#xff1a;B第二&#xff0c;我第三&#xff1b; B选手说&#xff1a;我第二&#xff0c;E第四&#xff1b; C选手说&#xff1a;我第一&#xff0c;D第二&#xff1b…

基于Docker-compose实现的Postgresql-11的主从复制

参考文章&#xff1a; http://t.csdn.cn/EnOVn http://t.csdn.cn/XTJqZ 记录一次主从复制的配置经历 服务器主从角色分配 ipdb 版本角色192.168.33.23411主192.168.33.22511从 docker-compose.yml文件 version: "3.3" services:postgres:image: postgresql-gis:11…

Linux:LNMP上搭建discuz论坛(源码安装)

LNMP环境 Linux &#xff1a;LNMP&#xff08;源码包安装&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客 discuz论坛 准备好源码包 LNMP环境正常 yum -y install unzip unzip Discuz_X3.3_SC_UTF8.zip # unzip 源码包名称 mv upload/ /usr/local/nginx/html/tarro…

云从科技大模型之路:昇思“黑土地”上的生态炼成记

文 | 智能相对论 作者 | 李永华 一线客户经理&#xff0c;为客户一键生成周全的资产配置建议&#xff1b; 中端管理人员&#xff0c;获得系统自动撰写的一整套数据分析报表&#xff0c;快速、准确授信&#xff1b; 金融市场的“操盘手”&#xff0c;能够实时获取那些影响市…

【框架源码】Spring源码解析之BeanDefinition加载流程解析

观看本文之前&#xff0c;我们先思考一个问题&#xff0c;Spring是如何描述Bean对象的&#xff1f; Spring是根据BeanDefinition来创建Bean对象&#xff0c;BeanDefinition就是Spring中表示Bean定义。BeanDefinition用来存储Bean的相关信息&#xff0c;主要包括&#xff1a;Be…

自动驾驶开源数据集(附下载链接)

自动驾驶是带动新兴产业的一个突破点&#xff0c;也是中国结合新能源汽车&#xff0c;实现汽车产业弯道超车的不二手段&#xff0c;是打破国外燃油车技术壁垒的关键一步&#xff01;它不会停止&#xff0c;只是在蓄势待发&#xff01; 数据集介绍&#xff1a;点击 自动驾驶场…

人机融合是自由与决定的交互

人机融合是指人类与机器之间的紧密合作与互动。在这种融合中&#xff0c;人类使用机器的能力来增强自身的能力&#xff0c;而机器则依赖人类的指导和判断来发挥作用。这种融合可以带来许多好处和机会&#xff0c;但也伴随着一些挑战和风险。 首先&#xff0c;人机融合可以为人类…

【线程池】Java线程池的内部类Worker详解

目录 一、简介 二、Worker类对象的类图 三、Worker类对象的解释 4.2 Worker继承自AQS有何意义&#xff1f; 四、Worker的主要代码 4.1 运行worker 4.2 worker和ThreadPool的关系 五、Worker源码分析 5.1 Worker实现接口Runnable&#xff0c;执行run方法 5.2 核心方法…

Kafka:Kafka资料整理

一、官网 二、博主文章 1、kafka是什么 • Worktile社区 三、源码解读

基于springboot+Redis的前后端分离项目(三)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 优惠券秒杀 优惠券秒杀1 -全局唯一ID2 -Redis实现全局唯一Id3 添加优惠卷4 实现秒杀下单5 库存超卖问题分析6 优惠券秒杀-一人一单…