判定二叉树是否为二叉排序树

设二叉树以二叉链表形式存放,用类C语言设计非递归算法判断一棵根结点为T的二叉树是否为二叉排序树。

可以参考二叉树中序遍历的非递归算法
非递归算法如下:

int InOrderTraverse(BiTree T)
{
	BiTree p;
	p=T;
	while(p||!StackEmpty(S))
	{
		if(p)
		{
			Push(S,p);
			if(p->data>p->lchild->data)
				p=p->lchild;
			else return 0;
		}
		else
		{
			Pop(S,p);
			cout<<p->data<<" ";
			if(p->data<p->rchild->data)
				p=p->rchild;
			else return 0;
		}
	}
	return 1}

递归算法附给大家一个链接:

判定二叉树为二叉排序树的递归算法