.先序遍历非递归算法voidPreOrderUnrec(Bitree*t){ Stacks;StackInit(s);Bitree*p=t;while(p!=NULL||!StackEmpty(s)){ while(p!=NULL) //遍历左子树 { visite(p->data); push(s,p); p=p->lchild; } if(!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历 { p=pop(s); p=p->rchild; }//endif }//endwhile}(Bitree*t){ Stacks;StackInit(s);Bitree*p=t; while(p!=NULL||!StackEmpty(s)){ while(p!=NULL) //遍历左子树 { push(s,p); p=p->lchild; } if(!StackEmpty(s)) { p=pop(s); visite(p->data); //访问根结点 p=p->rchild; //通过下一次循环实现右子树遍历 }//endif}//endwhile}{L,R}tagtype;typedefstruct{Bitreeptr;tagtypetag;}stacknode;typedefstruct{stacknodeElem[maxsize];inttop;}SqStack;voidPostOrderUnrec(Bitreet){SqStacks;stacknodex;StackInit(s);p=t;do{ while(p!=null)
二叉树先序、中序、后序遍历非递归算法 来自淘豆网m.daumloan.com转载请标明出处.