递归方式交换所有子树
递归思想:把一个复杂问题抽象化,在用调用自身的方式求解问题
算法思想:把一颗二叉树抽象成一个根结点和左右子结点,先交换左孩子的左右子树,再交换右孩子的左右子树,最后交换根结点的左右子树。
(类比树的后序遍历,先遍历左结点,再遍历右结点,只不过把visit函数改为交换左右子树)
void swap(BiTree b){
if(b){
swap(b->lchild); //递归的交换左子树
swap(b->rchild); //递归的交换右子树
temp=b->lchild; //交换左右孩子结点
b->lchild=b->rchild;
b->rchild=temp;
}
}
标签:结点,左右,递归,交换,子树,二叉树
From: https://www.cnblogs.com/Auous/p/16784138.html