用队列可以写这个算法吗?和用栈实现有什么区别?
题:二叉树以二叉链表存储,设计一算法将二叉树中的左右孩子交换非递归算法,用队列实现可以吗?用队列和用栈实现有什么区别?
帮忙解释一下(这是我写的用队列实现的算法)
void Exchange(BiTree bt)
{
if(bt)
{
InitQueue(Q);
EnQueue(Q,bt);
while(!EmptyQueue(Q))
{
DeQueue(Q,p);
if(p->lchild||p->rchild)
s=p->rchild;
p->rchild=p->lchild;
p->lchild=s;
else
{
if(p->lchild)
EnQueue(Q,p->lchild);
if(p->rchild)
EnQueue(Q,p->rchild);
}
}
}
}