二叉树 - 验证二叉搜索树

news2024/9/25 23:18:38

98. 验证二叉搜索树

在这里插入图片描述
在这里插入图片描述

方法一:辅助数组

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isValidBST = function (root) {
    let arr = [];
    const buildArr = (root) => {
        if (root) {
            buildArr(root.left);
            arr.push(root.val);
            buildArr(root.right);
        }
    }
    buildArr(root);
    for (let i = 1; i < arr.length; ++i) {
        if (arr[i] <= arr[i - 1])
            return false;
    }
    return true;
};

方法二:递归

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
 
var isValidBST = function (root) {
    let pre = null;
    const inOrder = (root) => {
        if (root === null) {
            return true;
        }
        let left = inOrder(root.left);

        if (pre !== null && pre.val >= root.val) {
            return false;
        }
        pre = root;
        let right = inOrder(root.right);
        return left && right;

    }
    return inOrder(root);
};

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

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

相关文章

WPF中创建横向的ListView

在WPF中&#xff0c;要创建横向的ListView&#xff0c;您可以通过设置ItemsControl的ItemsPanel来改变其项的排列方向。以下是一个简单的示例&#xff0c;展示了如何将ListView的项横向排列&#xff1a; 在这个例子中&#xff0c;WrapPanel用于横向排列其子元素&#xff0c;而…

本地Linux服务器使用docker搭建DashDot并实现公网实时监测服务器信息

文章目录 前言1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用3. 本地访问DashDot服务4. 安装cpolar内网穿透5. 固定DashDot公网地址 前言 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘&#xff0c;并且结合cpolar内网穿透工具可以实现公网实…

C语言 ——— 学习并使用条件编译指令

目录 何为条件编译指令 常见的条件编译指令 学习条件编译指令 使用条件编译指令 在程序预编译阶段&#xff0c;条件编译指令的代码转换 多分支的条件编译指令 何为条件编译指令 在编译一个程序的时候&#xff0c;如果要将一条语句&#xff08;一组语句&#xff09;选择编…

Redis学习Day2——Redis基础使用

扩展阅读推荐: Redis 教程 | 菜鸟教程 (runoob.com) 黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili 细说 Redis 九种数据类型和应用场景_redis数据类型及应用场景-CSDN博客 一、命令篇 1.1 Redis的命令分类 Redis是典型的K-V型数据库,key标识字符串,而value包含了很…

React Native 0.76版本发布

关于 React Native 的 New Architecture 概念&#xff0c;最早应该是从 2018 年 RN 团队决定重写大量底层实现开始&#xff0c;因为那时候 React Native 面临各种结构问题和性能瓶颈&#xff0c;最终迫使 RN 团队开始进行重构。 而从 React Native 0.68 开始&#xff0c;New A…

在B端管理系统中,复杂或者DIY功能,都依赖哪些编辑器/设计器

一、引言 在当今的商业环境中&#xff0c;B 端管理系统扮演着至关重要的角色。这些系统不仅需要满足企业日常的运营管理需求&#xff0c;还需要具备足够的灵活性和可扩展性&#xff0c;以适应不断变化的业务需求。而在实现复杂或可 DIY 的功能方面&#xff0c;各种编辑器和设计…

C++VTK鼠标框选局部删除三维网格

程序示例精选 CVTK鼠标框选局部删除三维网格 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《CVTK鼠标框选局部删除三维网格》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易…

暗星·Java实战之进阶旅游网

简介 暗星旅游网&#xff0c;是一个分为管理员端和用户端的项目&#xff0c;有权限分离认证&#xff0c;管理员端&#xff08;后台&#xff09;进行旅游产品的维护&#xff0c;主要功能有&#xff1a;管理员管理&#xff0c;角色管理&#xff0c;权限管理&#xff0c;认证和授…

Python怎么发送邮件:基础步骤与详细教程?

Python怎么发送邮件带附件&#xff1f;怎么使用Python发送邮件&#xff1f; 无论是工作中的通知、报告&#xff0c;还是生活中的问候、邀请&#xff0c;电子邮件都扮演着不可或缺的角色。那么&#xff0c;Python怎么发送邮件呢&#xff1f;AokSend将详细介绍Python发送邮件的基…

三、排序算法

文章目录 一、排序算法的介绍二、算法的时间复杂度2.1 基本介绍2.2 时间频度2.3 时间复杂度的表示2.4 算法的平均时间复杂度和最坏时间复杂度 三、算法的空间复杂度四、排序算法4.1 交换排序4.1.1 冒泡排序4.1.2 快速排序 4.2 选择排序4.2.1 简单选择排序4.2.2 堆排序 4.3 插入…

基于Llama 3的最强开源医疗AI模型发布,刷新榜单

转自&#xff1a;火星AIGC 一家名为Saama AI Labs发布了他们基于Llama 3 微调的开源医疗AI大模型OpenBioLLM-Llama3-70B 和 OpenBioLLM-Llama3-8B&#xff0c;刷新抱抱脸上的医疗大模型榜单&#xff0c;并占据榜首。其在生物医学领域的测试性能超越 GPT-4、Gemini、Meditron-7…

浙大数据结构:04-树6 Complete Binary Search Tree

这道题利用了完全二叉树的性质&#xff0c;我也参考了一些代码写的。 &#xff08;自己一开始写了别的方法&#xff0c;但一直过不了最后一个测试点&#xff0c;红温了&#xff09; 机翻&#xff1a; 1、条件准备 用vector存输入的数据&#xff0c;另一个数组存输出的结果&a…

文心一言 VS 讯飞星火 VS chatgpt (344)-- 算法导论23.2 3题

三、对于稀疏图 G ( V &#xff0c; E ) G(V&#xff0c;E) G(V&#xff0c;E)&#xff0c;这里 ∣ E ∣ Θ ( V ) |E|Θ(V) ∣E∣Θ(V)&#xff0c;使用斐波那契堆实现的Prim算法是否比使用二叉堆实现的算法更快&#xff1f;对于稠密图又如何呢&#xff1f; ∣ E ∣ |E| ∣E…

FPGA技术赋能云数据中心:提高性能与效率

随着现代科技的迅猛发展和大数据时代的推动&#xff0c;云数据中心已成为众多企业的核心基础设施。然而&#xff0c;伴随数据处理需求的不断增长&#xff0c;传统硬件架构在性能、功耗和灵活性方面面临诸多挑战。为了解决这些问题&#xff0c;FPGA&#xff08;现场可编程门阵列…

辽宁汇聚公益慈善力量,绿葆网络助力辽宁绿色生态建设,彰显企业大爱

9月5日&#xff0c;于辽宁省沈阳市隆重举行的“中华慈善日”主题宣传活动暨“山海有情 天辽地宁”即开型福利彩票发行、“生态公益林”项目启动仪式上&#xff0c;广州绿葆网络发展有限公司作为受邀企业之一&#xff0c;积极履行社会责任&#xff0c;向辽宁省慈善联合总会捐赠了…

坐牢第三十六天(QT)

自定义QQ界面 wedget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //qt中信息调试类 #include <QIcon> //图标类 #include <QPushButton>//按钮类 #include <QLabel> //标签类 #include <QMovie> //动图类…

【C++】—— vector 的模拟实现

【C】—— vector 的模拟实现 0 前言1 vector 的成员变量1.1 stl 库中的 vector 成员变量1.2 模拟实现 vector 成员变量 2 迭代器3 size、capacity、empty4 opreator[ ]5 reserve5.1 初版 reserve5.2 _finish 的处理5.3 深拷贝5.4 终版 6 push_back 与 pop_back7 打印函数7.1 初…

打破界限,自闭症寄宿学校带给孩子的改变

在社会的广阔画卷中&#xff0c;有一群特别的孩子&#xff0c;他们以独特的视角感知世界&#xff0c;以非凡的方式表达情感&#xff0c;他们就是自闭症儿童。自闭症&#xff0c;这个听起来略带神秘色彩的词汇&#xff0c;实则承载着无数家庭的期盼与挑战。在这片充满爱的土地上…

【北京迅为】《STM32MP157开发板使用手册》-第十六章 Buildroot制作根文件系统

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

丰巢“闯关”港交所上市

社区中随处可见的智能快递柜&#xff0c;即将捧出一个IPO。 近日&#xff0c;丰巢控股有限公司&#xff08;下称“丰巢控股”或“丰巢”&#xff09;正式向港交所递交了招股书&#xff0c;华泰国际担任其独家保荐人。这将是继顺丰控股、顺丰房托、嘉里物流、顺丰同城之后&…