如何判断一个二叉树是否是二叉排序树(二叉查找树)

以下用递归的方法来解决:



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

 

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/qq_43404362/article/details/84888596
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞