题解 | #二叉树的镜像#(这个还是以根节点一个为参数较好)
发布人:shili8
发布时间:2025-01-19 02:06
阅读次数:0
**二叉树的镜像**
在计算机科学中,二叉树是一种常见的数据结构,它通过每个结点最多有两个子结点来组织数据。二叉树的镜像是指将原来的二叉树按照一定规则反转过来得到的一种新二叉树。
**什么是二叉树的镜像**
二叉树的镜像可以通过以下步骤实现:
1. 将根结点作为新的根结点。
2. 对于每个结点,交换其左子结点和右子结点。
例如,如果我们有一个如下所示的二叉树:
4 / 25 / 136
那么它的镜像将是:
4 / 52 / 63 / 1
**实现二叉树的镜像**
下面是使用 Python 实现二叉树的镜像的代码示例:
class Node: def __init__(self, value): self.value = value self.left = None self.right = Nonedef mirror_tree(root): """ 将二叉树反转过来,得到新的二叉树。 :param root: 二叉树的根结点。 :return: 反转后的新二叉树的根结点。 """ if root is None: return None # 交换左子结点和右子结点 temp = root.left root.left = root.right root.right = temp # 递归反转左右子树 mirror_tree(root.left) mirror_tree(root.right) return root# 测试代码root = Node(4) root.left = Node(2) root.right = Node(5) root.left.left = Node(1) root.left.right = Node(3) root.right.right = Node(6) print("原二叉树:") # 中序遍历原二叉树def in_order_traversal(root): if root: in_order_traversal(root.left) print(root.value, end=" ") in_order_traversal(root.right) in_order_traversal(root) print(" 反转后的新二叉树:") new_root = mirror_tree(root) # 中序遍历反转后的新二叉树in_order_traversal(new_root)
**注释**
* `Node`类用于创建二叉树结点。
* `mirror_tree`函数将原来的二叉树反转过来,得到新的二叉树。它首先检查根结点是否为 None,如果是,则返回 None。然后,它交换左子结点和右子结点,并递归反转左右子树。
* 测试代码创建一个示例二叉树,然后使用 `mirror_tree`函数将其反转过来,得到新的二叉树。最后,它使用中序遍历打印出原来的二叉树和反转后的新二叉树。
**总结**
本文介绍了二叉树的镜像及其实现方法。通过交换左子结点和右子结点,并递归反转左右子树,可以将原来的二叉树反转过来,得到新的二叉树。测试代码示例了如何使用 Python 实现二叉树的镜像,并打印出原来的二叉树和反转后的新二叉树。