bool IsBST(BinTree T)
{
if (T == NULL || (T->Left == NULL) && (T->Right == NULL))
return true;
BinTree cur = NULL;
cur = T->Left;
if (cur != NULL)
{
while (cur->Right)
cur = cur->Right;
if (cur->Data > T->Data)
return false;
}
cur = T->Right;
if (cur != NULL)
{
while (cur->Left)
cur = cur->Left;
if (cur->Data < T->Data)
return false;
}
return (IsBST(T->Left) && IsBST(T->Right));
}
- 二叉搜索树 左边值小 右边值大
- 二叉搜索树的中序遍历是递增有序的
- 二叉搜索树的X节点的左子树的最右结点是中序遍历的X结点的前驱节点 二叉搜索树的X节点的右子树的最左结点是中序遍历的X结点的后继节点 前驱节点的值要比X小 后继节点的值要比X大 但凡不符合 直接
return false
- 递归树中每一个结点 但凡不符合
return false