您的位置:首页 > 理论基础 > 数据结构算法

数据结构之二叉树中序非递归遍历

2014-07-27 10:21 309 查看
 #SIZE 100

   typedef struct{

       int data;

       BNode *lchild,*rchild;

  }BNode,*BiTree;

   typedef struct{

     int top,rear;

     BiTree Tree[SIZE];

    }Stack; 

   int zhongxu_tree(BiTree &T,Stack &S){

        BiTree p=T;

        if(!p)return 1;

        S.rear=S.top=0;

        Push(p,S);

        while(1){

        if(p->lchild){

          p=p->lchild;

          Push(p,S);       

         }

        else{

           p=Pop(S);

           if(S.top==-1)

               break;

           visit(p);  

           while(!p->rchild)

           {

                 p=Pop(S);

                 if(S.top==-1)

                    break 2;

                 visit(p);       

           }

           Push(p->rchild,S);

           p=p->rchild;            

         }

       }

    }

    void Push(BiTree &p,Stack &S){

             if(S.top>=SIZE)

                 exit(1);

             S.Tree[top]=p;

             S.top++;

        }

    BiTree Pop(Stack &S){

            S.top--;

            if(S.top==-1)

               return NULL;

            else

               return S.Tree[S.top];

         }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: