题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
思路
- 如果有根结点,就互换它的左右孩子
- 分别递归左、右孩子
- 直到没有根节点
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
# write code here
if not root:
return None
root.left,root.right=root.right,root.left
self.Mirror(root.left)
self.Mirror(root.right)
return root
测试用例
#层次遍历
def printTreeLayer(root):
# write code here
if not root:
return []
res = []
tree = [root]
while len(tree):
root = tree.pop(0)
if root.left:
tree.append(root.left)
if root.right:
tree.append(root.right)
res.append(root.val)
return res
if __name__=='__main__':
s=Solution()
#构建源二叉树
root=TreeNode(8)
node1 = TreeNode(6)
node2 = TreeNode(10)
node3 = TreeNode(5)
node4 = TreeNode(7)
node5 = TreeNode(9)
node6 = TreeNode(11)
root.left=node1
root.right=node2
node1.left=node3
node1.right=node4
node2.left=node5
node2.right=node6
node3.left=node3.right=node4.left=node4.right=node5.left=node5.right=node6.left=node6.right=None
#打印源二叉树的层次遍历
print(printTreeLayer(root))
#调用函数,打印镜像二叉树的层次遍历
root1 = s.Mirror(root)
print(printTreeLayer(root1))