[C] 非递归后序遍历二叉树 →→→→→进入此内容的聊天室

来自 , 2021-03-11, 写在 C, 查看 103 次.
URL http://www.code666.cn/view/01931a69
  1. void NRPostOrder ( BiTree bt )
  2. /*非递归后序遍历二叉树bt*/
  3. {
  4.         stacktype stack[MAXNODE];
  5.         BiTree p;
  6.         int top,sign;
  7.         if ( bt==NULL ) return;
  8.         top=-1 /*栈顶位置初始化*/
  9.             p=bt;
  10.         while ( ! ( p==NULL && top==-1 ) )
  11.         {
  12.                 if ( p!=NULL ) /*结点第一次进栈*/
  13.                 {
  14.                         top++;
  15.                         stack[top].link=p;
  16.                         stack[top].flag=1;
  17.                         p=p->lchild; /*找该结点的左孩子*/
  18.                 }
  19.                 else
  20.                 {
  21.                         p=stack[top].link;
  22.                         sign=stack[top].flag;
  23.                         top--;
  24.                         if ( sign==1 ) /*结点第二次进栈*/
  25.                         {
  26.                                 top++;
  27.                                 stack[top].link=p;
  28.                                 stack[top].flag=2; /*标记第二次出栈*/
  29.                                 p=p->rchild;
  30.                         }
  31.                         else
  32.                         {
  33.                                 Visite ( p->data ); /*访问该结点数据域值*/
  34.                         }
  35.                 }
  36.         }
  37. }
  38.  

回复 "非递归后序遍历二叉树"

这儿你可以回复上面这条便签

captcha