力扣98 验证二叉搜索树
题目:
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例:
输入:root = [2,1,3]
输出:true
思路:
这题最容易出现的错误思路就是:单纯的比较左节点小于中间节点,右节点大于中间节点。即使递归处理了,得到的结果也是错的,比如遇到以下情况:这里10>6,但是每一层都满足单层逻辑。
我们要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点。
class Solution {
TreeNode max;
public boolean isValidBST(TreeNode root) {//1.确定参数和返回值
if (root == null) {//2.确定终止条件
return true;
}
//3.单层逻辑:中序遍历,验证遍历的元素是不是从小到大
// 左
boolean left = isValidBST(root.left);
// 中
if (max != null && root.val <= max.val) {//如果当前节点值不大于上一个节点的值,则不满足二叉搜索树
return false;
}
max = root;
// 右
boolean right = isValidBST(root.right);
return left&&right;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY