遞迴演算法:
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);
非遞迴演算法
使用棧作為儲存結構
定義並初始化棧
Stack s;
InitStack(s);
BitNode p,temp;
p=T;
while(p && !EmptyStack(s)){
if(p){
push(p);
p=p->lchild;
temp=p->lchild;
p->lchild=p->rchild;
p->rchild=temp;
遞迴演算法:
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;
}
}
}