题目: 请完成一个函数,输入一棵二叉树,该函数输出它的镜像。
# 定义二叉树节点
class BinaryTreeNode:
def __init__(self, data=None, left=None, right=None):
self.data = data
self.left = left
self.right = right
# 定义求解二叉树镜像的类
class Solution:
# 求解二叉树的镜像
def GetTreeMirror(self, root):
if root is None:
return None
if root.left is None or root.right is None:
return None
# 节点的左右子节点进行交换
root.left, root.right = root.right, root.left
if root.left:
self.GetTreeMirror(root.left)
if root.right:
self.GetTreeMirror(root.right)
return root
# 输出二叉树的前序遍历
def PrintBinaryTree(self, root):
if root is None:
return
print(root.data)
if root.left:
self.PrintBinaryTree(root.left)
if root.right:
self.PrintBinaryTree(root.right)
if __name__=="__main__":
# 构建二叉树
tree = BinaryTreeNode(8)
tree.left = BinaryTreeNode(6)
tree.right = BinaryTreeNode(10)
tree.left.left = BinaryTreeNode(5)
tree.left.right = BinaryTreeNode(7)
tree.right.left = BinaryTreeNode(9)
tree.right.right = BinaryTreeNode(11)
solution = Solution()
getRoot = solution.GetTreeMirror(tree)
solution.PrintBinaryTree(getRoot)