设二叉树以二叉链表形式存放,用类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;
}
递归算法附给大家一个链接: