Python中的树结构实现

0 投票
5 回答
9817 浏览
提问于 2025-04-15 20:31

如何在Python中实现树结构?

我刚开始学习Python。

给我一个大概念吧!

5 个回答

5

当然可以!请看下面的内容:

这段代码的作用是……(这里可以插入具体的代码解释)。它主要是用来……(描述代码的功能和用途)。

如果你是编程新手,可能会觉得这些内容有点复杂,但其实它就是在告诉计算机要做什么。简单来说,代码就像是给计算机下达的指令,告诉它该如何处理数据或者完成某个任务。

希望这样的解释能帮助你更好地理解这段代码的意思!

class Tree(object):
    def __init__(self, name, left_subtree = None, right_subtree = None):
        self._name = name
        self._left_subtree = left_subtree
        self._right_subtree = right_subtree

def inorder(tree):
    if tree is not None:
        inorder(tree._left_subtree)
        print tree._name
        inorder(tree._right_subtree)

if __name__ == '__main__':
    a = Tree('a')
    b = Tree('b')
    c = Tree('c', a, b)
    inorder(c)
6

这是一个二叉树的例子。它使用了Python 3.7中的数据类和类型提示。

"""
in-order, pre-order and post-order traversal of binary tree

              A
             / \
            B   C
           / \   \
          D   E   F
         / \
        G   H

    in-order
    G->D->H->B->E->A->F->C
    pre-order
    A->B->D->G->H->E->C->F
    post-order
    G->H->D->E->B->F->C->A
"""


from __future__ import annotations
from typing import Optional
from dataclasses import dataclass


@dataclass
class Node:
    data: str
    left: Optional[Node] = None
    right: Optional[Node] = None


@dataclass
class Tree:
    root: Node

    def in_order(self, node: Optional[Node]) -> None:
        if node:
            self.in_order(node.left)
            print(node.data, end="->")
            self.in_order(node.right)

    def pre_order(self, node: Optional[Node]) -> None:
        if node:
            print(node.data, end="->")
            self.pre_order(node.left)
            self.pre_order(node.right)

    def post_order(self, node: Optional[Node]) -> None:
        if node:
            self.post_order(node.left)
            self.post_order(node.right)
            print(node.data, end="->")


if __name__ == "__main__":
    h = Node("H")
    g = Node("G")
    f = Node("F")
    e = Node("E")
    d = Node("D", g, h)
    c = Node("C", f)
    b = Node("B", d, e)
    a = Node("A", b, c)

    tree = Tree(a)
    print("\nin-order")
    tree.in_order(a)
    print("\npre-order")
    tree.pre_order(a)
    print("\npost-order")
    tree.post_order(a)
6

创建一个叫做 Node 的类,这个类里面有一些内容对象,还有一个子节点的列表,这些子节点也是 Node 类的实例。

撰写回答