树
树和图都属于非线性结构,树的形式化定义:对于一个树,它是由两个集合构成的 T = { D , R } T = \{D,R\} T={ D,R}。 D D D是包含 n n n个节点的有限集合( n ≥ 0 n \geq 0 n≥0)。当 n = 0 n=0 n=0时,为空树,否则关系 R R R满足以下条件:
- 有且仅有一个结点 d ∈ D d \in D d∈D,它对于关系 R R R来说没有前驱结点,结点 d d d称作树的根结点。
- 除根节点外,每个结点有且仅有一个前驱结点。
- D D D中每个节点可以有零个或多个后继结点。
按照这个定义,树是一种一对多的数据结构。
树的递归定义:树是由 n ≥ 0 n \geq 0 n≥0个结点组成的有限集合(记为 T T T)。其中: 如果 n = 0 n=0 n=0,它是一棵空树,这是树的特例;如果 n > 0 n >0 n>0,这 n n n个结点中存在一个唯一结点作为树的根结点(root
),其余结点可分为 m m m ( m ≥ 0 m \geq 0 m≥0)个互不相交的有限子集 T 1 、 T 2 、 ⋯ 、 T m T_{1}、T_{2}、\cdots 、T_{m} T1、T2、⋯、Tm,而每个子集本身又是一棵树,称为根结点root
的子树。树中所有结点构成一种层次关系。
上图所示中的树有三颗子树。各子树的根节点分别是 B 、 C 、 D B、C、D B、C、D
- 树的基本术语:
- 结点的度与树的度:树中一个结点的子树的个数称为该节点的度。树中各结点的度的最大值称为树的度,通常将度为 m m m的树称为 m m m次树,或者 m m m叉树。
- 分支结点与叶结点:度不为零的结点称为非终端结点,又叫分支结点。度为零的结点称为终端结点或叶结点(或叶子结点)。度为
1
的结点称为单分支结点;度为2
的结点称为双分支结点,依此类推。
-
路径与路径长度:两个结点 d i d_{i} di和 d j d_{j} dj的结点序列( d i , d i 1 , d i 2 , ⋯ , d j d_{i},d_{i1}, d_{i2}, \cdots , d_{j} di,di1,d