题目:https://www.nowcoder.com/ta/coding-interviews

操作给定的二叉树,将其变换为源二叉树的镜像。

思考:

反转根节点的左右子节点,这样把左右子节点带着的子树进行了调整;接下来对翻转后的左节点进行左右子节点的调整;翻转后的右节点操作同理;

当交换完所有非也节点的左右子节点后,就可以得到原树的镜像。

实际操作:

反转二叉树的左右节点,其实直接反转就好了:root.left,root.right = root.right, root.left

1
2
3
4
5
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
1
2
3
4
5
6
7
8
9
class Solution:
def Mirror(self, root):
if not root:
return None
root.left,root.right = root.right, root.left
if root.left:
self.Mirror(root.left)
if root.right:
self.Mirror(root.right)
1
2