判断二叉搜索树的方法(C++实现)

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);
}

猜你喜欢

转载自blog.csdn.net/boiled_water123/article/details/105959487