主题:复制二叉树的非递归算法实现,老是有点问题,希望大家能帮忙看一下啊,在线等
/*-------------复制二叉树的非递归算法--------------*/
{
BiTNode *p,*q;
SqStack S1,S2;
InitStack(&S1);
InitStack(&S2);
Push(&S1,T);
N=(BiTNode *)malloc(sizeof(BiTNode));
N->data=T->data;
q=N;
Push(&S2,N);
//Push(&S1,T->lchild);
while(StackEmpty(S1)!=0)
{
while(GetTop(S1,&p)&&p)
{
q->lchild=(BiTNode*)malloc(sizeof(BiTNode));
q=q->lchild;
q->data=p->data;
Push(&S1,p->lchild);
Push(&S2,q);
}/*到最左的孩子*/
Pop(&S1,&p);/*退出空指针*/
Pop(&S2,&q);
if(StackEmpty(S1)!=0)
{
Pop(&S1,&p);
Pop(&S2,&q);
q->rchild=(BiTNode*)malloc(sizeof(BiTNode));
q=q->rchild;q->data=p->data;
Push(&S1,p->rchild);//向右一步
//Push(&S2,q);
}
}//while
}//BiTree_Copy_Nonrecursive
谁能帮忙看看哪错了啊,谢谢大家了
{
BiTNode *p,*q;
SqStack S1,S2;
InitStack(&S1);
InitStack(&S2);
Push(&S1,T);
N=(BiTNode *)malloc(sizeof(BiTNode));
N->data=T->data;
q=N;
Push(&S2,N);
//Push(&S1,T->lchild);
while(StackEmpty(S1)!=0)
{
while(GetTop(S1,&p)&&p)
{
q->lchild=(BiTNode*)malloc(sizeof(BiTNode));
q=q->lchild;
q->data=p->data;
Push(&S1,p->lchild);
Push(&S2,q);
}/*到最左的孩子*/
Pop(&S1,&p);/*退出空指针*/
Pop(&S2,&q);
if(StackEmpty(S1)!=0)
{
Pop(&S1,&p);
Pop(&S2,&q);
q->rchild=(BiTNode*)malloc(sizeof(BiTNode));
q=q->rchild;q->data=p->data;
Push(&S1,p->rchild);//向右一步
//Push(&S2,q);
}
}//while
}//BiTree_Copy_Nonrecursive
谁能帮忙看看哪错了啊,谢谢大家了