📜  python3 中序生成器 (1)

📅  最后修改于: 2023-12-03 15:19:13.026000             🧑  作者: Mango

Python3 中序生成器

中序生成器是一种在遍历二叉树时,能够以中序遍历的方式输出节点值的方法。在 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 中,我们可以使用一个生成器函数来实现中序生成器。