Skip to main content

Python 入门基础知识 - 数据结构与算法 - 树

Python 入门基础知识 - 数据结构与算法 - 树

树和图

树和前几篇文章说的数据结构不同,树不是线性的。在处理较多数据的时候,使用线性结构较慢,而使用树结构则

可以提高处理速度。不过树的构建相对于线性的表、堆栈和队列等较为复杂。

树是一种非线性的数据结构,如下图

Image

之所以称为树,是因为其形状像一颗倒置的大树。每颗树都有一个跟节点,如上图所示,Root为根节点。A、B、C

为Root的儿子,Root为A、B、C的父亲,A、B、C为兄弟。同样A为D、E的父亲,D、E为A的儿子,D、E为兄弟。D、E

为Root的孙子,Root为D、E的祖父。在树中,如果一个元素没有儿子,则称为树的叶子。

在Python中树的实现可以使用列表或者类的方式实现。使用列表的方式较为简单,但树的构建较为复杂。使用类的

方式构建树时,需要首先确定树中的节点所能拥有的最大儿子树。因为每个节点所拥有的儿子树并不一定相同,因此使用

类的方法将占用更大的存储空间,如下代码实例,以列表的方式构建了上图所示的树

# _*_ coding: utf-8 -*-
# version 2.7.13

G = ['G', []]  # 构造叶子G,树中每个元素都由该元素的值和该元素的儿子列表组成
H = ['H', []]  # 构造叶子节点H
I = ['I', []]  # 构造叶子节点I
K = ['K', []]  # 构造叶子节点K
E = ['E', [G, H, I, K]]  # 构造E节点
D = ['D', []]  # 构造叶子节点D
F = ['F', []]  # 构造叶子节点F
A = ['A', [D, E]]  # 构造A节点
B = ['B', []]  # 构造叶子节点D
C = ['C', [F]]  # 构造C节点
Root = ['Root', [A, B, C]]  # 构造树根
print(Root)

输出结果如下

['Root', [['A', [['D', []], ['E', [['G', []], ['H', []], ['I', []], ['K', []]]]]], ['B', []], ['C', [['F', []]]]]]
版权声明

版权声明

durban.zhang 创作并维护的 Walkerfree 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。本文首发于 Walkerfree 博客(http://www.walkerfree.com/),版权所有,侵权必究。本文永久链接:http://www.walkerfree.com/article/104