回 帖 发 新 帖 刷新版面

主题:有哪位仁兄,义姐帮下忙啊,有关中序遍历的非递归问题,急!在线等。

设计中序遍历完全二叉树的非递归算法,其中完全二叉树采用顺序存储结构存储。
是不是还得用数组形式阿, 我这样做对吗?
initstack(s);
while(i<=n||!stackempty(s)){
if(i<=n){push(s,a[i]);i=2i;}
else {
pop(s,a[i]);if(!visit a[i]))return error;
i=2i+1;}
}
}

回复列表 (共1个回复)

沙发

正确
左孩子2*i,右孩子2*i+1

还有就是用
树的基本形式拉

void InOrderTraverse(BiTNode *T)
{
     BiTNode *p;
     
     p = T;
     while(sp || p)
     {
         if(p)
         {
             Push(p);               /*根指针栈,便历左子树*/ 
             p = p->lchild;
         }//if         
         else
         {
             p = Pop();
             printf("%4c", p->data);/*根指针退栈,遍历右子树*/
             p = p->rchild;
         }//else
     }//while
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册