二叉树,如何设计一个算法,使得交换左右子树。要求非递归算法。 5
2个回答
展开全部
不是很简单吗?
childtype x=a.lchild;
a.lchild=a.rchild;
a.rchild=x;
childtype x=a.lchild;
a.lchild=a.rchild;
a.rchild=x;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
递归算法:
void exchange(BitTree T){
BitNode p;
if(T->lchild==null && T->rchild==null)
return;
else{
p=T->lchild;
T->lchild=T->rchild;
t->rchild=P;
}
if(T->lchild){
exchange(T->lchild);
}
if(T->rchild){
exchange(T->rchild);
}
}
非递归算法
使用栈作为存储结构
void exchange(BitTree T){
定义并初始化栈
Stack s;
InitStack(s);
BitNode p,temp;
p=T;
while(p && !EmptyStack(s)){
if(p){
push(p);
p=p->lchild;
}
else{
temp=p->lchild;
p->lchild=p->rchild;
p->rchild=temp;
p=p->lchild;
}
}
}
void exchange(BitTree T){
BitNode p;
if(T->lchild==null && T->rchild==null)
return;
else{
p=T->lchild;
T->lchild=T->rchild;
t->rchild=P;
}
if(T->lchild){
exchange(T->lchild);
}
if(T->rchild){
exchange(T->rchild);
}
}
非递归算法
使用栈作为存储结构
void exchange(BitTree T){
定义并初始化栈
Stack s;
InitStack(s);
BitNode p,temp;
p=T;
while(p && !EmptyStack(s)){
if(p){
push(p);
p=p->lchild;
}
else{
temp=p->lchild;
p->lchild=p->rchild;
p->rchild=temp;
p=p->lchild;
}
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询