树是一种较为复杂的数据结构,人们这样定义它:“由一个或多个(n>=0)节点组成的有限集合T,有且只有一个’根’节点(root),当n>1时,其余的结点分为m(m≥0)个互不相交的有限集合T1,T2,…,Tm。每个集合本身又是棵树,被称作这个根的子树 。”我们首先来看一下我们对其逻辑结构的表示图:

2015-05-31_215428 相对于逻辑结构,其物理储存结构也与我们之前学习过的一些基础结构差不多,要么是一块连续的空间储存,要么是链的方式储存。下面我们总结一下树的特性:

  • 树是多个互不相交的集合
  • 树是可以为空的
  • 树是递归定义的

 

【树的若干术语】

2015-05-31_221738 根:既根节点(没有前驱)上图中A节点 叶子:既终端节点(没有后继)上图中K L M节点 森林:指m棵不相交的树的集合(例如删除A后的子树个数) 有序树:结点各子树从左至右有序,不能互换(左为第一) 无序树:结点各子树可互换位置。 双亲:即上层的那个结点(直接前驱) parent 孩子:即下层结点的子树 (直接后继) child 兄弟:同一双亲下的同层结点(孩子之间互称兄弟)sibling 堂兄弟:即双亲位于同一层的结点(但并非同一双亲)cousin 祖先:即从根到该结点所经分支的所有结点 子孙:即该结点下层子树中的任一结点 节点:即树的数据元素 节点的度:结点挂接的子树数(有几个直接后继就是几度,亦称“次数”)从根到该结点的层数(根结点算第一层) 节点的层次:从根到该结点的层数(根结点算第一层) 终端节点:即度为0的结点,即叶子 分支节点:除树根以外的结点(也称为内部结点) 树的度:所有结点度中的最大值(Max{各结点的度}) 树的深度:指所有结点中最大的层数(Max{各结点的层次})