力扣98.验证二叉搜索树

法一(自己思路,复杂了):

from collections import dequeclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""queue = deque()if root.left!=None:queue.append(root.left)#节点的值可能是负数,所以要用列表queue.append([root.val])queue.append("0")if root.right!=None:queue.append(root.right)queue.append([root.val])queue.append("1")while len(queue)!=0:root = queue.popleft()# nodeVals = [].extend(queue.popleft())nodeVals = []nodeVals.extend(queue.popleft())paths = queue.popleft()for i in range(len(paths)):if paths[i]=="0" and root.val>=nodeVals[i]:return Falseif paths[i]=="1" and root.val<=nodeVals[i]:return FalsenodeVals.append(root.val)if root.left!=None:queue.append(root.left)queue.append(nodeVals)queue.append(paths+"0")if root.right!=None:queue.append(root.right)queue.append(nodeVals)queue.append(paths+"1")return True

法二(官方):
利用深度遍历,如图,一看就懂
在这里插入图在这里插入图片描述
片描述

代码

class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}public boolean isValidBST(TreeNode node, long lower, long upper) {if (node == null) {return true;}if (node.val <= lower || node.val >= upper) {return false;}return isValidBST(node.left, lower, node.val) && isValidBST(node.right, node.val, upper);}
}

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

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

相关文章

男士内裤什么牌子的好?五大质量出众男士内裤汇总

许多男性朋友在挑选男士内裤时&#xff0c;常常因市场上琳琅满目的品牌和多样化的材质而感到困惑&#xff0c;不知从何下手。然而&#xff0c;选择男士内裤并非一件小事&#xff0c;它关乎着舒适感、透气性以及抗菌效果等多方面的体验。因此&#xff0c;在选购男士内裤时&#…

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法

最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b&#xff0c;就是线性最小二乘&#xff1b;若f(x) ax2 b / ax2 bx 之类的&#xff0c;就是非线性最小二乘&#xff1b; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…

并发问题系统学习

进程、线程 进程&#xff1a;进程是代码在数据集合上的一次运行活动&#xff0c;是系统进行资源分配和调度的基本单位。可以理解为一个java应用。 线程&#xff1a;线程是进程的一个执行路径&#xff0c;一个进程中至少有一个线程&#xff0c;进程中的多个线程共享进程的资源。…

易基因: WGBS等揭示梨驯化和改良过程中DNA甲基化对果实成熟的作用机制 | 作物育种

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 梨&#xff08;Pyrus ssp.&#xff0c;蔷薇科杏仁核亚科&#xff09;是世界上最重要的温带水果作物之一。与野生梨相比&#xff0c;栽培梨的果实在许多形态特征上表现出显著变化&#xf…

出国旅游常用英语,柯桥成人英语培训

Where can I catch a taxi?哪里我可以叫到出租车&#xff1f; The taxi zone is right on the left corner over there.出租车站台就在左边转角处。 Are you free?您有空吗&#xff1f; Sure. Where are you going?当然。您要去哪里&#xff1f; Drive me back to Santa …

【邮件签名证书】基于公钥基础设施的数字证书

邮件签名证书&#xff0c;也称为S/MIME&#xff08;Secure/Multipurpose Internet Mail Extensions&#xff09;证书&#xff0c;是一种基于公钥基础设施&#xff08;PKI&#xff09;的数字证书&#xff0c;专门用于验证电子邮件发送者的身份并保证邮件内容未被篡改。它通过在邮…

flex 盒子布局 align-items: start; flex-wrap: wrap; justify-content: space-between;

flex 盒子布局 align-items: start; flex-wrap: wrap; justify-content: space-between; 总盒子 .allboc {display: flex;width: 100%;align-items: start;flex-wrap: wrap;justify-content: space-between; }左边 justify-content: flex-start; .blog-articles {display: fl…

服务攻防——应用协议软件,设备平台

向日葵利用 vnc利用5900端口 当为none就可以直接连接&#xff0c;而其他几种密码也能破解 可以使用hydna来尝试爆破 teamviewer(cve2020-13699) 让对方点击这个网站&#xff0c;就会 触发 zabbix 端口10051 cve2020 手工 点击这个 找到cookie 然后不需要密码就能进…

基于springboot实现的在线动漫信息平台

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven…

项目中使用Elasticsearch的API相关介绍

项目中使用Elasticsearch的API相关介绍 0、域映射类型 text&#xff1a;会分词&#xff0c;不支持聚合对当前搜索关键词&#xff0c;先自身分词&#xff0c;分成多个词&#xff0c;然后去一个一个的词去利用倒排索引去查询es索引库一般应用在搜索关键字匹配的字段的类型。 商…

内存函数:memcpy(拷贝),memmove(拷贝),memcmp(比较),memset(设置)

内存函数 一.memcpy&#xff08;内存拷贝1&#xff09;1.函数使用2.模拟实现 二.memmove&#xff08;内存拷贝2&#xff09;1.函数使用2.模拟实现 三.memcmp&#xff08;内存比较&#xff09;1.函数使用2.模拟实现 四.memset&#xff08;内存设置&#xff09;1.函数使用2.模拟实…

umi项目运行时配置,app.ts

运行时配置和配置的区别是他跑在浏览器端&#xff0c;基于此&#xff0c;我们可以在这里写函数、tsx、import 浏览器端依赖等等&#xff0c;注意不要引入 node 依赖。 getInitialState 用于获取初始化数据&#xff0c;初始化数据使用 useModel 在各个组件中使用&#xff0c;在…