一、无向树
连通而不含回路的无向图称为无向树,简称树,用T表示
- 度数为1的节点称为叶
- 度数大于1的节点称为分支点或内部节点
- 每个连通分支都是树的无向图称为森林
- 平凡图称为平凡树
关于无向树的等价命题
设无向图G=<V,E>,|V|=n,|E|=m,下列各命题等价:
- G连通而不含回路(G是树)
- G中无回路,且m=n-1
- G是连通的,且m=n-1
- G中无回路,在任意两结点之间增加一条新边,得到唯一一条基本回路
- G是连通的,单删除任一条边后,就不连通(n≥2)
- G中每一对结点之间有唯一一条基本通路(n≥2)
由上述命题可知:
- 树是边数最多的无回路无向图
- 树是边数最少的连通图
二、生成树
给定图G=<V,E>
,
若G的某个生成子图是树,则称之为G的生成树,记为TG,生成树TG中的边称为树枝
G中不在TG中的边称为弦,TG的所有弦的集合称为生成树的补
生成树存在的条件
一个图G=<V,E>存在生成树TG=<VT,ET>的充分必要条件是G是连通的
生成树算法
破圈法:循环找到图中的回路。并删除回路中的一条边,直到删除的边总数为m-n+1
避圈法:循环选取G中一条与已选取的边不构成回路的边,直到选取的边总数为n-1
三、最小生成树
设G=<V,E>是连通的赋权图,T是G的一棵生成树,T的每个树枝所赋权值之和称为T的权,记为w(T)。G中具有最小权的生成树称为G的最小生成树。
最小生成树算法
Kruskal:在与已选取的边不构成回路的边中取最小者
Prim:从任意节点开始,每次增加一条最小权边构成一棵新树
四、根树
有向树:一个有向图,若略去所有有向边的方向得到的无向图是一棵树,则这个有向图为有向树
一棵非平凡有向树,如果恰有一个结点入度为0,区域所有结点入度均为1,称为根树或外向树。
入度为0的结点称为根
出度为0的结点称为叶
入度为1,出度大于0的结点称为内点
内点和根统称为分支点
根到任意节点v的通路长度称为结点v的层数
层数相同的结点在同一层
所有结点的层数中最大的称为根树的高
结点的家族关系
若从结点vi到vj可达,称vi是vj的祖先,vj是vi的后代
若<vi,vj>是根树的有向边,称vi是vj的父亲,vj是vi的儿子
如果两个结点是同一个结点的儿子,则称这两个结点是兄弟
有序树
有序树:根树中规定了每一层上结点的次序
k元树:根树T每个分支点至多有k个儿子
满k元树:根树T每个分支点恰有k个儿子
以v为根的子树:任一结点v及其所有后代导出的子图T’
满k元树性质
若叶数位t,分支点数为i,则**(k - 1) × i = t - 1**
五、哈夫曼
前缀码:各编码前缀均不相同(a不是b的前缀)
最优树:权值最小的赋权二元树
哈夫曼算法:取权值最小的两个结点合成,把合成后的父结点加回结点列表