中序遍历二叉树的非递归算法

作者:袖梨 2022-07-02

void inorder(BiTree root)

{

  int top=0;p=root;

 L1:if(p!=NULL)         /*遍历左子树*/

    {top=top+2;

     if(top>m)return;  /*栈满溢出处理*/

     s[top-1]=p;       /*本层参数进栈*/

     s[top]=L2;        /*返回地址进栈*/

     p=p->LChild;      /*给下层参数赋值*/

     goto L1;

L2:Visit(p->data);

   top=top+2;

   if(top>m)return;    /*栈满溢出处理*/

   s[top-1]=p;        /*遍历右子树*/

   s[top]=L3;

   p=p->RChild;

   goto L1;

}

L3:if(top!=0)

{

   addr=s[top];

   p=s[top-1];      /*取出返回地址*/

   top=top-2;        /*退出本层参数*/

   goto addr;

}

}

 

 这是一个模仿递归的程序,哪位大哥或大姐给小弟讲下啊,我实在看不懂啊!!!sos!!!


相关文章

精彩推荐