交换二叉树的所有左右子树

递归方式交换所有子树

递归思想:把一个复杂问题抽象化,在用调用自身的方式求解问题

算法思想:把一颗二叉树抽象成一个根结点和左右子结点,先交换左孩子的左右子树,再交换右孩子的左右子树,最后交换根结点的左右子树。

(类比树的后序遍历,先遍历左结点,再遍历右结点,只不过把visit函数改为交换左右子树)

void swap(BiTree b){
    if(b){
        swap(b->lchild);         //递归的交换左子树
        swap(b->rchild);         //递归的交换右子树
        temp=b->lchild;          //交换左右孩子结点
        b->lchild=b->rchild;
        b->rchild=temp;
    }
}
posted @ 2022-10-12 12:39  Auous  阅读(544)  评论(0)    收藏  举报