Python中的树结构实现
如何在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
类的实例。