给你一个二叉树的根节点 root
,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
- 节点的左子树只包含 小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
代码语言:javascript复制输入:root = [2,1,3]
输出:true
示例 2:
代码语言:javascript复制输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。
题解:
力扣 LeetCode
代码语言:javascript复制class Solution {
public:
bool isValidBST(TreeNode *root, long left = LONG_MIN, long right = LONG_MAX) {
if (root == nullptr)
return true;
long x = root->val;
return left < x && x < right &&
isValidBST(root->left, left, x) &&
isValidBST(root->right, x, right);
}
};