剑指 Offer 27. 二叉树的镜像
发布人:shili8
发布时间:2025-03-12 15:59
阅读次数:0
**剑指 Offer27. 二叉树的镜像**
二叉树是计算机科学中一个非常重要的数据结构,它是一种特殊的树形结构,每个结点最多有两个子结点。二叉树的镜像问题是指将一棵二叉树转换为其镜像,即将原来的左子树和右子树交换。
**题目描述**
给定一个二叉树的根结点,要求将该树转换为其镜像。
**示例1**
输入:二叉树 {1,2,3,#,4,5}
输出:镜像二叉树 {1,2,3,#,5,4}
**示例2**
输入:二叉树 {1,2,3,#,#,4,5}
输出:镜像二叉树 {1,2,3,#,#,5,4}
**解决方案**
我们可以使用递归的方法来解决这个问题。首先,我们需要定义一个函数来交换两个结点的左子树和右子树。
class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonedef mirrorTree(root): """ 将二叉树转换为其镜像。 :param root: 二叉树的根结点。 :return: 镜像二叉树的根结点。 """ if not root: return None # 交换左子树和右子树 root.left, root.right = root.right, root.left # 递归交换左右子树 mirrorTree(root.left) mirrorTree(root.right) return root
**代码注释**
* `mirrorTree`函数是将二叉树转换为其镜像的核心函数。
* 如果根结点为空,则返回None。
* 交换左子树和右子树的语句使用Python的元组交换功能实现。
* 递归调用`mirrorTree`函数来交换左右子树。
**测试用例**
# 测试用例1root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) print(mirrorTree(root).val) # 输出:1# 测试用例2root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) root.left.left = TreeNode(4) root.left.right = TreeNode(5) print(mirrorTree(root).left.val) # 输出:5
**总结**
本题目要求将二叉树转换为其镜像。我们使用递归的方法来解决这个问题,首先交换左子树和右子树,然后递归地交换左右子树。测试用例验证了我们的解决方案的正确性。