LeetCode #98 验证二叉搜索树
Posted 三笠·阿卡曼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode #98 验证二叉搜索树相关的知识,希望对你有一定的参考价值。
题目
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
示例
最佳代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isValidBST(TreeNode root) {
if (root == null) {
return true;
}
return validator(root, null, null);
}
//定义一个辅助校验器,用来传入上下界递归调用
public boolean validator(TreeNode root, Integer lowerBound, Integer upperBound) {
if (root == null) {
return true;
}
//判断当前节点的值是否在上下界之内,如果超出返回false
if (lowerBound != null && root.val <= lowerBound) {
return false;
}
if (upperBound != null && root.val >= upperBound) {
return false;
}
//2.递归判断左右子树
return validator(root.left, lowerBound, root.val) && validator(root.right,root.val,upperBound);
}
}
以上是关于LeetCode #98 验证二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章