bool isBST(TreeNode *root)
{
TreeNode *prev;
if(root != NULL)
{
if(!isBST(root->left))
return false;
if(prev != NULL && root->data < prev->data)
return false;
prev = root;
if(!isBST(root->right))
return false;
}
return true;
}
bool checkBST(TreeNode *root, int min, int max)
{
if(root == NULL)
return true;
if(root->data < min || root->data > max)
return false;
return checkBST(root->left, min, root->data) && checkBST(root->right, root->data, max);
}
bool isBST(TreeNode *root)
{
//节点值的初始范围可限定为TNT_MIN以及TNT_MAX
return checkBST(root, INT_MIN, INT_MAX);
}