1.树
我们选择一种数据结构,不仅要能存储数据,而且要能体现数据之间的关系。目前数据主要有是三种关系一对一、一对多、多对多;之前我们讨论了线性表(数组、链表、栈、队列),其中的元素具有一对一的关系,通过元素之间左右相连来表达数据。为了表达具有一对多关系的数据,我们引进了树的概念。掌握树的关键就在于掌握这种不断延伸的一对多的关系。
下面我们介绍几种约定俗称的概念:
节点:树中的每一个元素称为节点
父节点(双亲节点):产生其它节点的节点(即一对多中的一),其往往是一种局部相对的关系,如图A、B、C、D中的A就是B、C、D的父节点
子节点:由其它节点产生的节点(即一对多中的多),这也是一种局部相对关系,如图A、B、C、D中的B、C、D就是A的子节点
根节点:一棵树中最顶层节点(没有任何的父节点),这是一种绝对的关系,相对于整棵树而言。如图中的A。
叶子节点:没有任何子节点的节点,这也是一种绝对的关系,相对于整棵树而言。如图中的K、L、F、G、M、I、J
子树:大树中所包含的小树,比如上面的树中B、E、F、K、L也构成了一棵树,称为子树。一棵树往往由多棵子树构成。
空树:没有任何节点的树
度:一个节点所拥有的子树数量,称为节点的度。即节点对应的分支树。各接节点中最大的度,称为树的度。
层次:从根节点到最远子节点,经过的节点数量。比如上图中的A、B、E、K为最远路径,该树的层次为4
有序树和无序树:兄弟节点之间是有顺序,称为有序树。否则是无序树。如上面的图就是一棵有序树。请注意这里的有序并不表示兄弟节点间的大小关系,更多表示的是这种树是对兄弟元素间顺序敏感</