分析
先用递归
//二叉树的两个孩子换位置(递归版本):
void exchange(BiTree BT)
{ BiTree p;
if(BT=NULL)
{
p=BT-> lchild;
BT-> lchild=BT-> rchild;
BT-> rchild=p;
exchange(BT-> lchild);
exchange(BT-> rchild);
}
}
非递归实现
//二叉树的两个孩子换位置(非递归版本): // 在二叉链表下的交换操作
void exchange(BiTree BT)
{
BiTree r,p;
BiTree stack[100];
int tp=0;
stack[0]=BT;
while(tp >= 0)
{
p=stack[tp];
tp=tp-1;
if(p!=NULL)
{
r=p-> lchild;
p-> lchild=p-> rchild;
BT-> rchild=r;
stack[tp+1]=p-> lchild;
tp=tp+1;
stack[tp+1]=p-> rchild;
tp=tp+1;
}
}
}