【算法第十二天7.26】二叉树层序遍历,翻转二叉树,对称二叉树
发布人:shili8
发布时间:2025-03-11 20:35
阅读次数:0
**二叉树层序遍历**
二叉树层序遍历是一种常见的遍历算法,它从最左边的节点开始,依次访问每一层的所有节点。这种遍历方式可以很好地体现出二叉树的结构。
### 层序遍历代码示例
class Node: def __init__(self, value): self.value = value self.left = None self.right = Nonedef levelOrderTraversal(root): if root is None: return queue = [root] while queue: node = queue.pop(0) print(node.value, end=" ") if node.left: queue.append(node.left) if node.right: queue.append(node.right) # 构造一个示例二叉树root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) print("层序遍历结果:") levelOrderTraversal(root) # 输出:12345
### 翻转二叉树翻转二叉树是指将原来的二叉树结构反转过来,所有节点的左子树变为右子树,所有节点的右子树变为左子树。
### 翻转二叉树代码示例
class Node: def __init__(self, value): self.value = value self.left = None self.right = Nonedef invertTree(root): if root is None: return # 交换左右子树 root.left, root.right = root.right, root.left # 递归翻转左、右子树 invertTree(root.left) invertTree(root.right) # 构造一个示例二叉树root = Node(1) root.left = Node(2) root.right = Node(3) root.left.left = Node(4) root.left.right = Node(5) print("翻转前:") levelOrderTraversal(root) # 输出:12345invertTree(root) print("翻转后:") levelOrderTraversal(root) # 输出:13254
### 对称二叉树对称二叉树是指左子树和右子树完全相同,且左右子树的结构也完全相同。
### 检测对称二叉树代码示例
class Node: def __init__(self, value): self.value = value self.left = None self.right = Nonedef isSymmetric(root): if root is None: return True # 使用递归检查左右子树是否对称 return isMirrorTree(root.left, root.right) def isMirrorTree(tree1, tree2): if tree1 is None and tree2 is None: return True if tree1 is None or tree2 is None: return False # 检查当前节点的值是否相同 if tree1.value != tree2.value: return False # 递归检查左子树和右子树是否对称 return isMirrorTree(tree1.left, tree2.right) and isMirrorTree(tree1.right, tree2.left) # 构造一个示例二叉树root = Node(1) root.left = Node(2) root.right = Node(2) root.left.left = Node(3) root.left.right = Node(4) root.right.left = Node(4) root.right.right = Node(3) print("是否对称:", isSymmetric(root)) # 输出: True
以上是关于二叉树层序遍历、翻转二叉树和对称二叉树的代码示例和解释。这些算法可以很好地帮助我们理解和操作二叉树结构。