📅  最后修改于: 2023-12-03 15:19:13.026000             🧑  作者: Mango
中序生成器是一种在遍历二叉树时,能够以中序遍历的方式输出节点值的方法。在 Python3 中,可以通过生成器来实现中序遍历。
在 Python3 中,可以使用一个生成器函数来遍历二叉树。以下是一个示例代码:
def inorder_traversal(node):
if node.left is not None:
yield from inorder_traversal(node.left)
yield node.value
if node.right is not None:
yield from inorder_traversal(node.right)
在这个代码中,我们使用 yield from
来递归地遍历左、中、右子树。当遇到每一个节点的时候,我们会 yield
出该节点的值。
要使用中序生成器来遍历一个二叉树,我们需要先构建一棵二叉树。以下是一个构建二叉树的示例:
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def build_tree():
root = Node(5)
root.left = Node(2)
root.right = Node(7)
root.left.left = Node(1)
root.left.right = Node(4)
root.left.right.left = Node(3)
root.right.left = Node(6)
root.right.right = Node(8)
return root
在这个示例中,我们构建了一个具有 9 个节点的二叉树。
要使用中序生成器来遍历这棵二叉树,我们可以使用以下代码:
tree = build_tree()
for value in inorder_traversal(tree):
print(value)
这会输出以下内容:
1
2
3
4
5
6
7
8
中序生成器是一种非常方便的方法,可以在遍历二叉树时输出顺序为中序遍历的节点值。在 Python3 中,我们可以使用一个生成器函数来实现中序生成器。