抽象数据模型
我们介绍了两个序列数据结构,数组和链表。
关于数组和链表除了理论上的操作和约束,我们还讲了它们是如何对应到计算机内存的存储空间上去的。
之所以要讲到这个程度,是因为我们后面所有的代码都要用到这两个数据结构,而对代码中某些细节的理解要借助于对相应数据结构实现的认知,因此不得不讲到如此层面。
这一章我们要介绍两种相对复杂的数据结构:树和图。
鉴于本门课内并不会在代码层面涉及到这两种结构,我们仅讨论作为抽象数据类型的树和图。
小贴士:所谓抽象数据模型(ADT),指的是计算机科学中数据结构的数学模型或者语义。
抽象数据类型是纯粹的理论实体,仅定义其上可执行的操作以及这些操作的效果的数学约束,而不涉及到具体的实现。
抽象数据类型方便用来简化描述算法,也便于初学者理解复杂数据结构。
树和图的数学理论基础都是图论(Graph Theory)。
图
图论中的图
在图论中,图是一种由一个对象集合组成的结构,这些对象之间存在着若干具有某种联系的“对象对(pair)”。
经过数学抽象,这些对象被抽象成了顶点(ver