描述
操作给定的二叉树,将其变换为源二叉树的镜像。
比如: 源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
不确定两者有什么关系,先试着把他们的三种遍历顺序写出来。
源二叉树:
①前序:8 6 5 7 10 9 11
②中序:5 6 7 8 9 10 11
③后序:5 7 6 9 11 10 8
镜像二叉树:
①前序:8 10 11 9 6 7 5
②中序:11 10 9 8 7 6 5
③后序:11 9 10 7 5 6 8
这样看下来的话,源二叉树的前序反过来是镜像二叉树的后序,源二叉树的中序反过来是镜像二叉树的中序,源二叉树的后序反过来是镜像二叉树的前序。
之前的第4题根据前序和后序重建二叉树,那么用源二叉树的后序反过来加上源二叉树的中序反过来,就能重建除镜像二叉树。
看看讨论组的方法是什么?厉害,代码都好短!
class Solution:
def Mirror(self , pRoot ):
if pRoot:
right = self.Mirror(pRoot.left)
left = self.Mirror(pRoot.right)
pRoot.right = right
pRoot.left = left
return pRoot
class Solution:
def Mirror(self, pRoot):
if not pRoot:
return None
l, r = pRoot.left, pRoot.right
pRoot.left = self.Mirror(r)
pRoot.right = self.Mirror(l)
return pRoot
思路是先遍历左子树,交换左右孩子,然后遍历右子树,交换左右孩子,类似于后序遍历。
这篇博客探讨了如何将一个二叉树转换为其镜像,并分析了源二叉树和镜像二叉树的遍历顺序之间的关系。通过前序、中序和后序遍历的对比,发现它们的反向对应性。文中提供了两种简洁的Python实现,通过递归方式完成二叉树的镜像变换,遵循类似后序遍历的顺序。

613

被折叠的 条评论
为什么被折叠?



