数据结构后序遍历二叉树非递归算法


代码如下:

 1 void postorder(BiTree T)  2 {  3     InitStack(S);          //初始化栈
 4     p=T;  5     r=null;      //辅助指针,指向最近访问过的结点
 6     while(p||!IsEmpty(s))  7  {  8         if(p)  9  { 10  push(S,p); 11             p=p->lchid;        //走到最左边
12  } 13         else         //向右查找
14  { 15             GetTop(S,p);     //获取栈顶元素,不出栈
16             if(p->rchild!=null&&p->rchild!=r)         //如果右孩子非空并且没有访问过
17                 p=p->rchild;     //转向右孩子
18             else         //否则弹出节点并访问
19  { 20  pop(S,p); 21                 visit(p->data); 22                 r=p;         //记录最近访问过的结点
23                 p=null;      //结点访问完,重置p指针
24  } 25  } 26  } 27 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM