我想知道非递归的算法,谢谢
你把书上的修改一下就可以了
竟然当了版主,做做义务...
非递归的话,跟层序遍历二叉树差不多,引入个队列就行了.
简单代码如下:
boolean judge(Tree &T)
{
Tree p=null;
bool flag=true;
Queue q;
EnQueue(q,T);
while(!isEmpty(q)||p!=null)//当队列非空或者p非空
{
p=DeQueue(q);//出队
if(p)
{
if(p->lchild)
{
if(p->lchild->data<p->data)
EnQueue(q,p->lchild);//入队,表示继续向下执行
else
{
flag=false;
break;
}
}
if(p->rchild)
{
if(p->rchild->data>p->data)
EnQueue(q,p->rchild);
else
{
flag=false;
break;
}
}
}
}
return flag;
}
[此贴子已经被作者于2007-1-2 21:38:40编辑过]
我想知道非递归的算法,谢谢
同样的,除了soft_wind 斑竹说的队列,也可以仿照任何一种遍历做.用栈.
哦,谢谢各位!!
好象上面的层次遍历的方法有问题呢,这样只能比较根和左右子树的根,不满足二叉搜索树的定义