前面章节给大家介绍的都是线性存储结构,包括顺序表、链表、栈、队列、数组、广义表。从本节开始,带大家学习一种非线性存储结构,称为树存储结构。
树结构通常用来存储逻辑关系为 "一对多" 的数据。例如:
图 1 树存储结构
图 1a) 的这些元素具有的就是 "一对多" 的逻辑关系,例如元素 A 同时和 B、C、D 有关系,元素 D 同时和 A、H、I、J 有关系等。 观察这些元素之间的逻辑关系会发现,它们整体上很像一棵倒着的树(将图 1b) 倒过来),这也是将存储它们的结构起名为“树”(或者 "树形")的原因。
存储具有 "一对多" 逻辑关系的数据,数据结构推荐使用树存储结构。
有关树的术语
就好像学习链表要知道 "结点" 代表什么意思,学习广义表要知道 "原子" 和 "子表" 分别代表什么意思。系统学习树存储结构之前,也必须了解一些相关的术语。
1) 结点
和链表类似,树存储结构中也将存储的各个元素称为 "结点"。例如在图 1a) 中,元素 A 就是一个结点。
对于树中某些特殊位置的结点,还可以进行更细致的划分,比如:
- 父结点(双亲结点)、孩子结点和兄弟结点:以图 1a) 中的