当前位置:实例文章 » 其他实例» [文章]剑指 Offer 27. 二叉树的镜像

剑指 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


**总结**

本题目要求将二叉树转换为其镜像。我们使用递归的方法来解决这个问题,首先交换左子树和右子树,然后递归地交换左右子树。测试用例验证了我们的解决方案的正确性。

其他信息

其他资源

Top