力扣 LeetCode 98. 验证二叉搜索树(Day9:二叉树)

news/2024/11/22 14:24:01/

解题思路:

方法一:直接中序遍历放入数组(非常直观的想法)

需要注意用for循环进行重复值的判断,二叉搜索树不能有值相等的节点

class Solution {List<Integer> list = new ArrayList<>();public boolean isValidBST(TreeNode root) {recur(root);List<Integer> res = new ArrayList<>(list);Collections.sort(list);for (int i = 1; i < list.size(); i++) {if (list.get(i - 1).equals(list.get(i))) return false;}if (list.equals(res)) return true;return false;}public void recur(TreeNode root) {if (root == null) return;recur(root.left);list.add(root.val);recur(root.right);}
}

方法二:引入额外的一个变量进行比较(个人觉得比方法三更好理解)

class Solution {long pre = Long.MIN_VALUE;public boolean isValidBST(TreeNode root) {if (root == null) return true;boolean isLeft = isValidBST(root.left);if (pre < root.val) pre = root.val;else return false;boolean isRight = isValidBST(root.right);return isLeft && isRight;}
}

方法三:与前一个节点进行比较

class Solution {TreeNode pre = null;public boolean isValidBST(TreeNode root) {if (root == null) return true;boolean isLeft = isValidBST(root.left);if (pre != null && pre.val >= root.val) return false;pre = root;boolean isRight = isValidBST(root.right);return isLeft && isRight;}
}


http://www.ppmy.cn/news/1549055.html

相关文章

Redis 集群主要有以下几种类型

Redis 集群主要有以下几种类型&#xff1a; 主从复制模式&#xff1a; 这种模式包含一个主数据库实例&#xff08;master&#xff09;与一个或多个从数据库实例&#xff08;slave&#xff09;。客户端可以对主数据库进行读写操作&#xff0c;对从数据库进行读操作&#xff0c;主…

Kafka Stream实战教程

Kafka Stream实战教程 1. Kafka Streams 基础入门 1.1 什么是 Kafka Streams Kafka Streams 是 Kafka 生态中用于 处理实时流数据 的一款轻量级流处理库。它利用 Kafka 作为数据来源和数据输出&#xff0c;可以让开发者轻松地对实时数据进行处理&#xff0c;比如计数、聚合、…

2024-11-18-sklearn学习(1)-线性回归(2)

文章目录 sklearn学习&#xff08;1&#xff09;-线性回归(2)3.Lasso&#xff08;拟合系数稀疏的线性模型&#xff09;3.1 Lasso基础3.2 Lasso的正则化参数设置3.2.1 使用交叉验证3.2.1 基于信息标准的模型选择3.2.1 与 SVM&#xff08;支持向量机&#xff09; 的正则化参数的比…

【halcon技巧】如何扩大背景

背景介绍 我需要将大量零散的区域聚合到一起,所以会用到膨胀,将分散的区域粘到一起。 形成一个整体之后还需要恢复到之前的大小!于是就会用到腐蚀。这样就能恢复到和之前一样的大小。 但是理想很饱满,现实很意外。现在出现的情况是,膨胀时 图片右边膨胀的区域大小超出的…

springboot基于微信小程序的食堂预约点餐系统

摘 要 基于微信小程序的食堂预约点餐系统是一种服务于学校和企事业单位食堂的智能化解决方案&#xff0c;旨在提高食堂就餐的效率、缓解排队压力&#xff0c;并优化用户的就餐体验。系统作为一种现代化的解决方案&#xff0c;为食堂管理和用户就餐提供了便捷高效的途径。它不仅…

cuda共享内存

在 CUDA 或 HIP 程序中使用共享内存时&#xff0c;需要注意以下关键点&#xff0c;以确保代码的正确性和高效性&#xff1a; 1. 共享内存的特点 线程块级别共享&#xff1a;共享内存是线程块&#xff08;block&#xff09;内的所有线程共享的&#xff0c;线程块外的线程无法访…

【PCIE链路训练介绍】

PCIE链路训练介绍 1 PCIE链路初始化与训练1.1 链路训练达成目标1.1.1 位锁定1.1.2 字符锁定(Gen1 & Gen2 Only&#xff09;or 块锁定(Gen3 only)1.1.3 确定链路宽度1.1.4 通道位置翻转(Lane Reversal)1.1.5 信号极性翻转&#xff08;Polarity Inversion&#xff09;1.1.6 确…

近几年新笔记本重装系统方法及一些注意事项

新笔记本怎么重装系统&#xff1f; 近几年的新笔记本默认开启了raid on模式或vmd选项&#xff0c;安装过程中会遇到问题&#xff0c;新笔记本电脑重装自带的系统建议采用u盘方式安装&#xff0c;默认新笔记本有bitlocker加密机制&#xff0c;如果采用一键重装系统或硬盘方式安装…