首页 > 其他分享 >交换二叉树的所有左右子树

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

时间:2022-10-12 12:44:05浏览次数:56  
标签:结点 左右 递归 交换 子树 二叉树

递归方式交换所有子树

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

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

(类比树的后序遍历,先遍历左结点,再遍历右结点,只不过把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

相关文章