//************************************
// Method: Is_BSTree
// FullName: Is_BSTree
// Access: public
// Returns: bool T是二叉排序树返回true,否则返回false
// Qualifier: 判断二叉树是否为二叉排序树,采用中序遍历的思想,因为待输出元素一定大于其前面输出的元素
// Parameter: BTree T 默认完全二叉树从小到大排序的
//************************************
bool Is_BSTree(BTree T)
{//中序遍历二叉树
static int last_output=INT_MIN;
static bool flag = true;
if (T)
{//先序遍历二叉树,用last_output表示最后输出的节点值
if (flag)
Is_BSTree(T->lchild);
if (T->data < last_output)
{ //如果待处理元素小于前面才输出的元素,则肯定不是
flag = false;
}
last_output = T->data;
if (flag)
Is_BSTree(T->rchild);
}
return flag;
}