以下用递归的方法来解决:
bool IsBSTree(BiTree T) {
if (!T) { //若传入的是空树,则返回false。
return false;
}
else if (T->lchild == NULL && T->rchild == NULL) { //若查到了叶节点,说明是正确的
return true;
}
else if (T->lchild && !(T->rchild)) { //若只有左结点
if (T->data < T->lchild->data) {
return false;
}
return IsBSTree(T->lchild);
}
else if (T->rchild && !(T->lchild)) { //若只有右结点
if (T->data > T->rchild->data) {
return false;
}
return IsBSTree(T->rchild);
}
else //既有右结点,又有左结点
{
if (T->data<T->lchild->data || T->data>T->rchild->data) {
return false;
}
return (IsBSTree(T->lchild) && IsBSTree(T->rchild));
}
}