首页 > 用户发贴区 > 编程问题提问区 > 中序遍历二叉树的非递归算法
2008
10-03

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

/*s[m]表示栈,top表示栈顶指针*/


void inorder(BiTree root)    /*中序遍历二叉树,root卫二叉树的根结点*/


{


   top=0;p=root;


   do{


        while(p!=NULL)


          { if(top>m) return;


             top=top+1;


             s[top]=p;


             p=p->LChild;


             };    /*遍历左子树*/


        if(top!=0)


           {p=s[top];


           top=top-1;


           Visit(p->data);   /*访问根结点*/


           p=p->RChild;}  /*遍历右子树*/


      }while(p!=NULL||top!=0)


 } 
我觉得这个程序无法完成遍历,                                  –


   减号的左右孩子为+和/                                +                    /


   + 的孩子结点为a和*                               a        *           d      e


  /的孩子结点为d和e                                          b      c


*的孩子节点为b和c


我认为它不能遍历b c, 当访问了+号之后,会跳到减号那里,然后遍历减号的右子树


留下一个回复