绪论
第十章对应的是课本上第六章的第一节,也就是树。
Tree structure
树是离散数学中图论里面的一个概念,数据结构中的树一般都是指的离散数学中的有根树(且一般是有向的)。有关树的性质离散数学中介绍的要比数据结构详细很多,有关树的概念和性质建议直接看离散数学,这里只做部分知识和概念的复习。
Parent,Children,Siblings
首先讨论的是结点与结点之间的关系。
如果两个结点相邻,对于两个结点构成的边,起点为终点的parent(父节点),终点为起点的chidren(子节点)。例如下面的图中,结点H为结点I的父节点,结点J,K,L为结点I的子节点。
子节点的个数不限定,称为一个结点的degree(度),用deg(_)表示。父节点的个数只能为0或1,在有根树中,父结点个数为1的结点只有一个,就是树的根结点,其余结点的父节点存在且唯一。
两个结点不相邻的情况较为复杂,一般对于树的不同情况做不同的解释,最为通用的关系就是如果两个结点的父节点相同,那么称这两个结点的关系为siblings(兄弟)。下图中,J,K,L三个结点的关系就是siblings。
这种不相邻的情况最为简单,在很多树的存储结构中将兄弟结点像单链表一样连接起来,于是先将兄弟关系放在parent,children一起讨论。
path,ancestor,descendant
对于其他不相邻两个结点的关系,首先需要知道一个概念叫做path(路径),这个概念解释起来比较繁杂,涉及的概念较多,简单来说,我们假设一个人当前在某个结点A,可以前往与这个结点关联的边的终点,最终通过若干次前进,可以到达结点B,那么称结点A与结点B相通,前进过程中经过的边称为A到B的路径。
树的性质有树上的任意两个节点之间存在唯一的某个结点到另一个结点的路径,对于某两个不相邻的结点存在的路径,起点称为终点的ancestor(祖先),终点称为起点的descendant(后代)。
有例子分别如下: