就是判断一个树是不是二叉搜索树。只需要判断该节点的左右子节点,以及左子树最大值以及右子树最小值即可。
bool isValidBST(TreeNode* root) {
if (!root) return true;
if(root->left)
{
if (root->left->val >= root->val) return false;
auto tmp = root->left;
while (tmp->right)
tmp = tmp->right;
if (tmp->val >= root->val) return false;
}
if(root->right)
{
if (root->right->val <= root->val) return false;
auto tmp = root->right;
while (tmp->left)
tmp = tmp->left;
if (tmp->val <= root->val) return false;
}
return isValidBST(root->left) && isValidBST(root->right);
}