考研数据结构(每日一题)
题目:设树B是一棵采用链式结构存储的二叉树,编写一个把树B中所有结点的左右子树进行交换的函数。
算法图解:
算法思想:
递归的交换左右子树。先交换b结点左孩子的左右子树,然后交换b结点的右孩子的左右子树,最后交换b结点的左右孩子,当结点为空时递归结束。
完整代码:
void swap(BiTree b){
if(b){
swap(b -> lchild); //递归交换左子树
swap(b -> rchild); //递归交换右子树
temp = b -> lchild; //交换左右子树结点
b -> lchild = b -> rchild;
b -> rchild = temp;
}
}