3.11  如何对二叉树进行镜像反转

3.11 如何对二叉树进行镜像反转

【出自TB笔试题】

难度系数:★★★☆☆ 被考察系数:★★★☆☆

题目描述:

二叉树的镜像就是二叉树对称的二叉树,就是交换每一个非叶子结点的左子树指针和右子树指针,如下图所示,请写出能实现该功能的代码。注意:请勿对该树做任何假设,它不一定是平衡树,也不一定有序。

978-7-111-61212-4-Part02-124.jpg

分析与解答:

从上图可以看出,要实现二叉树的镜像反转,只需交换二叉树中所有结点的左右孩子即可。由于对所有的结点都做了同样的操作,因此,可以用递归的方法来实现,由于需要调用printTreeLayer层序打印二叉树,这种方法中使用了队列来实现,实现代码如下:

978-7-111-61212-4-Part02-125.jpg

978-7-111-61212-4-Part02-126.jpg

程序的运行结果如下:

二叉树层序遍历结果为:4 2 6 1 3 5 7

反转后的二叉树层序遍历结果为:4 6 2 7 5 3 1

算法性能分析:

由于对给定的二叉树进行了一次遍历,因此,时间复杂度为O(N)。