两种做法——判断是否是二叉搜索树

https://leetcode.cn/problems/validate-binary-search-tree/description/?envType=study-plan-v2&envId=top-interview-150
在这里插入图片描述

方法一:中序遍历

考虑只有两个节点和一个结点的情况,可以头尾各加一个最大最小值,不用特判了,也可以直接特判1和0

由于测试样例里有最大值,所以INT最大值不够用

class Solution {List<Long> list = new ArrayList<>();public void dfs(TreeNode root){if(root==null) return;dfs(root.left);list.add((long)root.val);dfs(root.right);}public boolean isValidBST(TreeNode root) {list.add(Long.MIN_VALUE);dfs(root);list.add(Long.MAX_VALUE);for(int i = 1 ;i < list.size()-1; i++)if(list.get(i-1)>=list.get(i)||list.get(i)>=list.get(i+1))return false;return true;}
}
class Solution {List<Integer> list = new ArrayList<>();public void dfs(TreeNode root){if(root==null) return;dfs(root.left);list.add(root.val);dfs(root.right);}public boolean isValidBST(TreeNode root) {dfs(root);if(list.size()==1) return true;if(list.size()==2){if(list.get(1)>list.get(0)) return true;else return false;}for(int i = 1 ;i < list.size()-1; i++)if(list.get(i-1)>=list.get(i)||list.get(i)>=list.get(i+1))return false;return true;}
}

递归法:

非常精妙的区间法,利用区间进行递归。

在这里插入图片描述

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

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

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

相关文章

一.初始typescript

什么是ts 首先我们要确认typescript是一个语言&#xff0c;是等同于JavaScript层级得&#xff0c;并不是一些人认为得是JavaScript得类型规范工具或者插件。 ts与js的差异 从type script这个名字就可以看出&#xff0c;ts其实是JavaScript的一个类型化超集&#xff0c;它增…

电脑搜不自己的手机热点,其余热点均可!

一、现象&#xff1a; 之前可正常连接&#xff0c;突然间发现收不到自己的WiFi信号&#xff0c;其余人均可收到。通过重复手机电脑关机、改变热点设置中的频段等方式均没解决&#xff0c;同事电脑和手机可搜索到我的WiFi。 二、问题&#xff1a; WiF驱动程序更新 三&#x…

覆盖路径生成算法STC(Spanning Tree Coverage)

STC 一种最基本的基于栅格地图的覆盖路径生成算法&#xff0c;代码地址。 以初始点为根节点最小生成树。将每个格子分成2x2小格子。先序遍历最小生成树&#xff08;顺时针或者逆时针包围&#xff09;&#xff0c;可以画出包围整棵生成树的哈密顿路径。 覆盖分析 在网格地图…

谷歌Gemini AI模型使用指南

引言 2023年12月7日&#xff0c;谷歌宣布推出其迄今为止功能最强大、最通用的多模态人工智能&#xff08;AI&#xff09;大模型&#xff1a;Gemini。根据最新的性能评估&#xff0c;Gemini在多项指标上已经超越了ChatGPT 4。 Gemini的使用教程 Gemini 模型从大到小分为Ultra…

深度学习疫情社交安全距离检测算法 - python opencv cnn 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 相关技术3.1 YOLOV43.2 基于 DeepSort 算法的行人跟踪 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习疫情社交安全距离检测算法 ** 该项目较为新颖&#xff0c;适合作为竞赛…

appium :输入框控件为android.view.View 时输入内容(如:验证码、密码输入框)

问题背景 输入密码的组件信息为&#xff1a;<android.view.View resource-id“com.qq.ac.android:id/pwd_input”> 由于输入框控件是android.view.View&#xff0c;不是android.widget.EditText&#xff0c;所以只能点击&#xff0c;而启动appium后&#xff0c;会将输入…

【c】杨辉三角

下面介绍两种方法 1.利用上面性质的第五条&#xff0c;我们可以求各行各列的组合数 2.利用上面性质的第7条&#xff0c;我们可以用数组完成 下面附上代码 1. #include<stdio.h> void fact(int n ,int m )//求组合数 {long long int sum11;long long int sum21;int a…

LeetCode二分查找:寻找旋转排序数组中的最小值

LeetCode二分查找&#xff1a;寻找旋转排序数组中的最小值 题目描述 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋…

CentOS 7 安装并配置tomcat

简介 Tomcat是一个使用Java编写的开源Web应用服务器,是由Apache Software Foundation管理的一个项目。它是一个轻量级的应用服务器,可以下载、安装和使用,而且还提供了许多高级功能,例如支持Java Servlet、JavaServer Pages (JSP)和JavaServer Faces (JSF) 等JavaEE技术,…

【SQL开发实战技巧】系列(四十八):Oracle12C常用新特性☞多分区操作和管理

系列文章目录 【SQL开发实战技巧】系列&#xff08;一&#xff09;:关于SQL不得不说的那些事 【SQL开发实战技巧】系列&#xff08;二&#xff09;&#xff1a;简单单表查询 【SQL开发实战技巧】系列&#xff08;三&#xff09;&#xff1a;SQL排序的那些事 【SQL开发实战技巧…

全方位解读SeaTunnel MySQL CDC连接器:实现数据高效同步的强大工具

在当今数据快速增长的时代&#xff0c;实时、高效地同步和处理来自各种数据源的信息成为了企业和开发者面临的重要挑战。 MySQL作为广泛使用的数据库之一&#xff0c;其变更数据捕获&#xff08;CDC&#xff09;功能对于实现这一目标至关重要。在这篇文章中&#xff0c;我们将深…

[Linux] nginx配置的主配置文件

一、六个模块的作用 全局块&#xff1a;全局配置&#xff0c;对全局生效&#xff1b; events块&#xff1a;配置影响 Nginx 服务器与用户的网络连接&#xff1b; http块&#xff1a;配置代理&#xff0c;缓存&#xff0c;日志定义等绝大多数功能和第三方模块的配置&#xff1b;…