给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
方法一:使用递归。使用上界uper,下界lower,递归时将左子树传入递归函数时上界变为根节点的值,将右节点传入递归函数时,下界为根节点的值。
class Solution {
public:
bool isBST(TreeNode* root,long uper,long lower){
if(root == nullptr){
return true;
}
if(root->val <= lower || root->val >= uper){
return false;
}
return isBST(root->left,root->val,lower) && isBST(root->right,uper, root->val);
}
bool isValidBST(TreeNode* root) {
return isBST(root,LONG_MAX,LONG_MIN);
}
};