题目描述
给你一个二叉树的根节点 root
,判断其是否是一个有效的二叉搜索树。
有效二叉搜索树定义如下:
1.节点的左子树只包含小于当前节点的数。
2.节点的右子树只包含大于当前节点的数。
3.所有左子树和右子树自身必须也是二叉搜索树。
算法1
(BFS)
C++ 代码
class Solution {
public:
bool isValidBST(TreeNode* root)
{
return bfs(root, LONG_MIN, LONG_MAX);
}
bool bfs(TreeNode* root, long long min, long long max)
{
if (!root) return true;
if (root->val <= min || root->val >= max) return false;
return bfs(root->left, min, root->val) && bfs(root->right, root->val, max);
}
};