剑指offer-27

剑指 Offer 27. 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

1
2
3
4
5
     4
/ \
2 7
/ \ / \
1 3 6 9

镜像输出:

1
2
3
4
5
     4
/ \
7 2
/ \ / \
9 6 3 1

示例

1
2
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

解法

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def mirrorTree(self, root: TreeNode) -> TreeNode:
if not root:
return None

self.mirrorTree(root.left)
self.mirrorTree(root.right)
temp = root.left # 保存左子树,交换右子树
root.left =root.right
root.right = temp
return root

更优雅的一种写法:

剑指 Offer 27. 二叉树的镜像(递归 / 辅助栈,清晰图解) - 二叉树的镜像 - 力扣(LeetCode) (leetcode-cn.com)

1
2
3
4
5
6
7
8
9
10
public TreeNode mirrorTree(TreeNode root) {
if (root == null) {
return null;
}
TreeNode leftRoot = mirrorTree(root.right);
TreeNode rightRoot = mirrorTree(root.left);
root.left = leftRoot;
root.right = rightRoot;
return root;
}
作者

bd160jbgm

发布于

2021-06-10

更新于

2021-06-17

许可协议