欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > LeetCode:98. 验证二叉搜索树

LeetCode:98. 验证二叉搜索树

2025/11/9 16:39:17 来源:https://blog.csdn.net/m0_75035023/article/details/143923866  浏览:    关键词:LeetCode:98. 验证二叉搜索树

目录

题目描述:

代码:

第一种:

第二种:

第三种:


题目描述:

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左

    子树

    只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = [2,1,3]
输出:true

示例 2:

输入:root = [5,1,4,null,null,3,6]
输出:false

代码:

第一种:

范围递归

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

第二种:

中序递归

 long pre=Long.MIN_VALUE;public boolean isValidBST2(TreeNode root) {if(root==null){return true;}boolean a=isValidBST2(root.left);//此时a已经为false,但还是会继续往下进行下去的if(!a){return false;}if(pre>=root.val){return false;}pre=root.val;return isValidBST2(root.right);}

第三种:

中序非递归

 public boolean isValidBST1(TreeNode root) {TreeNode p = root;LinkedList<TreeNode> stack = new LinkedList<>();long prev =Long.MIN_VALUE;while (p != null || !stack.isEmpty()) {if(p!=null){stack.push(p);p = p.left;}else{TreeNode pop= stack.pop();if(prev>=pop.val){return false;}prev = pop.val;p=pop.right;}}return true;}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词