LeetCode 98. 验证二叉搜索树(中序遍历)

文章目录

    • 1. 题目信息
    • 2. 解题
      • 2.1 递归中序
      • 2.2 非递归中序

1. 题目信息

给定一个二叉树,判断其是否是一个有效的二叉搜索树

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

示例 1:输入:2/ \1   3
输出: true
示例 2:输入:5/ \1   4/ \3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 递归中序

  • 二叉搜索树的中序(左根右)输出是非降序列(不能相等的话,是升序的)。

在这里插入图片描述

class Solution {
public:bool isValidBST(TreeNode* root) {if(!root)return true;long prev = INT64_MIN;bool valid = true;isValid(root, prev, valid);return valid;}void isValid(TreeNode* root, long &prev, bool &valid){if(!valid || !root)return;isValid(root->left, prev, valid);if(valid)valid = (root->val > prev);prev = root->val;isValid(root->right, prev, valid);}
};

2.2 非递归中序

利用栈递归改循环
在这里插入图片描述

class Solution {
public:bool isValidBST(TreeNode* root) {if(!root)return true;long prev = INT64_MIN;bool valid = true;stack<TreeNode*> stk;TreeNode *cur = root;while(cur != NULL || !stk.empty()){while(cur != NULL){stk.push(cur);cur = cur->left;}cur = stk.top();stk.pop();if(cur->val <= prev)return false;prev = cur->val;cur = cur->right;}return valid;}
};

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

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

相关文章

阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景

什么是 Zookeeper Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目&#xff0c;它主要是用来解决分布式应用中经常遇到的一些数据管理问题&#xff0c;如&#xff1a; 统一命名服务 状态同步服务 集群管理 分布式应用配置项的管理等 Zookeeper已经成为Hadoop生态系统…

GNN学习一

一、为什么使用图卷积 传动的深度学习方法&#xff0c;比如卷积网络&#xff0c;效果很好&#xff0c;但是它研究的对象是Euclidean data&#xff0c;这种数据的特征就是有规则的空间结构&#xff0c;比如图片是规则的正方形格子&#xff0c;比如语音是规则的一维序列。这些数…

禁术级竞赛刷分技巧:找到跟测试集最接近的有标签样本

文 | 苏剑林单位 &#xff5c; 追一科技编 | 兔子酱不管是打比赛、做实验还是搞工程&#xff0c;我们经常会遇到训练集与测试集分布不一致的情况。一般来说我们会从训练集中划分出来一个验证集&#xff0c;通过这个验证集来调整一些超参数[1]&#xff0c;比如控制模型的训练轮数…

论文浅尝 | 最新10篇《知识图谱》论文推荐(ICML, CVPR, ACL, KDD, IJCAI 2019)

本文转载自公众号&#xff1a;专知。【导读】知识图谱一直是研究热点&#xff0c;研究者近年来广泛关注知识图谱嵌入&#xff08;Knowledge Graph Embedding&#xff0c;简称KGE&#xff09;方法&#xff0c;在保留语义的同时&#xff0c;将知识图谱中的实体和关系映射到连续的…

详解RPC远程调用和消息队列MQ的区别

谈到分布式架构&#xff0c;就不得不谈到分布式架构的基石RPC。 什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;主要解决远程通信间的问题&#xff0c;不需要了解底层网络的通信机制。 RPC服务框架有哪些 知名度较高的有Thrift&#x…

GNN学习二

基于频谱的图卷积和基于空间的图卷积 &#xff08;在图上做傅里叶变换&#xff1f;&#xff09; 图时间空间网络-交通上车流速度和红绿灯

技术动态 | eBay开源分布式知识图谱存储Beam,支持类SPARQL查询

本文转载自公众号&#xff1a;AI前线。作者 | Diego Ongaro&#xff0c;Simon Fell 译者 | 盖磊 编辑 | Natalie AI 前线导读&#xff1a;eBay 工程人员于 5 月 1 日在 官方技术博客 上发布了开源的分布式知识图谱存储 Beam&#xff0c;Beam 实现了事实数据的 RDF 存储&#xf…

2020国内互联网公司的开源项目及Github地址部分汇总

2020国内互联网公司的开源项目及Github地址部分汇总 一、Alibaba 阿里巴巴 阿里巴巴的开源项目很多&#xff0c;都说国内Java公司的技术架构大部分来自阿里系&#xff0c;而且还有很多重量级的项目&#xff0c;例如LVS、Tengine&#xff0c;或者很有实践价值的中间件&#xf…

端到端问答新突破:百度提出RocketQA,登顶MSMARCO榜首

源 | 机器之心开放域问答&#xff08;Open-domain QA&#xff09;一直是自然语言处理领域的重要研究课题。百度从面向端到端问答的检索模型出发&#xff0c;提出了RocketQA训练方法&#xff0c;大幅提升了对偶式检索模型的效果&#xff0c;为实现端到端问答迈出了重要的一步。R…

深度剖析RPC框架的核心设计

做过分布式服务端的Java工程师&#xff0c;随着对技术底层的认知的加深&#xff0c;都会或多或少的会去想: 一个RPC框架需要考虑的问题有哪些&#xff0c;如何来解决&#xff1f; 下面我们围绕RPC通信框架&#xff0c;从如何实现这个角度做一个剖析&#xff0c;以及每个环节能…

LeetCode 200. 岛屿数量(图的遍历)

文章目录1. 题目信息2. 解题2.1 DFS2.2 BFS1. 题目信息 给定一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;计算岛屿的数量。一个岛被水包围&#xff0c;并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你…

论文浅尝 | 引入“引用”的语言模型

笔记整理&#xff1a;杨帆&#xff0c;浙江大学硕士&#xff0c;研究方向知识图谱.论文链接&#xff1a;https://arxiv.org/pdf/1611.01628.pdf动机Referring expression&#xff08;RE&#xff09;在自然语言中十分常见&#xff0c;并且在信息交流中扮演了十分重要的角色&…

短文本语义匹配/文本相似度框架(SimilarityNet, SimNet),基于bow_pairwise模式及框架原理介绍

用PaddlePaddle实现段文本语义匹配Simnet模型 https://aistudio.baidu.com/aistudio/projectdetail/124373 Hinge loss&#xff1a; https://blog.csdn.net/hustqb/article/details/78347713 原文链接&#xff1a;https://blog.csdn.net/qq_33187136/article/details/10677043…

卖萌屋招人啦!

萌萌的小夕突然出现&#xff5e;这次来寻找小伙伴一起建设小屋啦&#xff01;本期提供四种通道可直达卖萌屋核心腹地&#xff01;小编/作者日常&#xff1a;发现&#xff0c;拍脑袋&#xff0c;然后写写写外部投稿的审核与编辑基本条件&#xff1a;对NLP、CV、IR、Rec、Ads、DM…

LeetCode 36. 有效的数独(哈希)

文章目录1. 题目信息2. 解题2.1 暴力3次遍历查找2.2 一次遍历查找1. 题目信息 判断一个 9x9 的数独是否有效。只需要根据以下规则&#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线…

如何从0到1设计一个类Dubbo的RPC框架

之前分享了如何从0到1设计一个MQ消息队列&#xff0c;今天谈谈“如何从0到1设计一个Dubbo的RPC框架”&#xff0c;重点考验&#xff1a; 你对RPC框架的底层原理掌握程度。 以及考验你的整体RPC框架系统设计能力。 RPC和RPC框架 1.RPC&#xff08;Remote Procedure Call&#x…

shell脚本实现命令的自动执行

背景&#xff1a;在我傻傻的手工执行命令整整一天手腕都有点疼之后发现shell这个大宝贝简直开心的不得了 1. 关于shell脚本的使用&#xff1a; 一、编写完成的shell脚本放到脚本要执行的文件的相同目录下 二、注意shell脚本的编码问题&#xff08;windows和mac下编写的脚本格式…

论文征集 | 2019 Joint International Semantic Technology Conference

第九届国际语义技术联合会议将于今年十一月在美丽的杭州召开&#xff0c;现在征集优秀的研究论文&#xff0c;本届会议还专门设置了special session track&#xff0c;优秀论文将被推荐到SCI期刊发表&#xff0c;敬请赐稿&#xff01;http://jist2019.openkg.cn/The Joint Inte…

阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别

什么是RPC RPC&#xff08;Remote Procedure Call Protocol&#xff09;——远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。 简言之&#xff0c;RPC使得程序能够像访问本地系统资源一样&#xff0c;去…

LeetCode 322. 零钱兑换(DP)

文章目录1. 题目信息2. 解题2.1 回溯穷举2.2 动态规划1. 题目信息 给定不同面额的硬币 coins 和一个总金额 amount。 编写一个函数来计算可以凑成总金额所需的最少的硬币个数。 如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1。 示例 1: 输入: coins [1, 2, 5], …