先想到的是利用BST树的性质——中序遍历递增,但是我现在还不能 确定是否这样就能判断,先把这种算法算作一种算法,不对的话,多谢大家帮忙指正:)
1.中序遍历递增
想法:利用双指针,一个指向前驱一个指向当前节点,比较他们的大小
bool isBST(Node * node)
{
if ( node== NULL)
return true;
//如果左子树最大值大于根节点,则返回false
if (node->left != NULL && maxValue( node->left) > node->data)
return false;
//如果右子树最小值小于根节点,则返回false
if (node->right != NULL && minValue( node->right) < node->data)
return false;
//递归判断
if (!isBST(node->left) || !isBST( node->right))
return false;
//所有检测都通过,是BST
returntrue;
}
时间复杂度:O(n)
2.利用定义:BST树是树中任意