10.树
1.树
无向树
- 无向树:连通无回路的无向图
- 树叶:度数等于
的顶点 - 分支点:度数大于等于
的顶点
树的性质
-
设
是 阶 条边的无向图,则下面命题互相等价: 是树 中任意两个顶点之间存在唯一的路径 是无回路且 是连通的且
-
设
是 阶非平凡的无向树,则 中至少有 片树叶。 -
例1:无向简单图G是棵树,当且仅当
- A. G 连通并且边数比节点数少1
- B . G 连通并且节点数比边数少1
- C . G 的边数比节点数少1
- D . G 中没有回路
-
例2:边数等于节点数减1的无向图是树
-
例3:设
是5个顶点的完全图,则从 G 中删除 条边可以得到树
A.4 B.5 C. 6 D. 10 -
例4:一棵树有2个2度顶点,1个3度顶点 和3个4度顶点,则1度顶点数为
解:任何无向图中,所有顶点的度数之和等于边数的2倍。
设1度顶点数为,
则
解得
-
最小生成树
- 子图:设
, ,若 , 则称 为 的子图。若 则称 为 的生成子图。 - 生成树:如果无向图
的生成子图 是树,则称 是 的生成树。 - 生成树的权:无向连通带权图
, 是G的一颗生成树, 的各边权之和称为 的权,记作 。 - 无向图
有生成树当且仅当 是连通图。 - 最小生成树:G的所有生成树中权最小的生成树。
- 例:设赋权无向连通图
如下,求 G 的最小生成树,并求该最小生成树的权总和。
- step1: 给权排序:
- step2: 描点,将边数置零
- step3: 选边(权最小,且不构成回路)
- step4: 一直重复第三步,直到边数 = 顶点数
,结束。
得:
- step1: 给权排序:
- 例:设赋权无向连通图
2.根
- 有向树:若有向图的基图是无向树,则称这个有向图是有向树。
- 根树:一个顶点的入度是
,其余顶点的入度为 的有向树。 - 层数:从树根到顶点的路径的长度(即路径中的边数)。
在画根树时,通常会把树根画在最上方,有向边的方向向下或者斜下方,并省去各边上的箭头。
若的每个分支点至多有 个儿子,则称 为 叉树。
最优二元树
-
最优二叉树:权最小的二叉树。
即:每个元素 它的层数的和。 -
例:用Huffman算法,计算一组权为
的最优二叉树,并求它们的权值。 - step1: 给权排序
- step2: 选出2个权最小的顶点,添加新点,权为两点之和
- step3: 重复step1、2,直到只有1个顶点。
-
例:某字符串如下:
AABBCCCDDEEECCCCDDDDDAAABBBDDDEEEEECCDDEEEEAABBBEEEE,请为该字符串设计哈夫曼编码,要求画出哈夫曼树构建过程。
解:字符串A、B、C、D、E出现的次数分别是次,以此作为权值构建哈夫曼树。
由图可设计各字符编码:
-
-
2元前缀码:
符号串构成的前缀码。 
-
最佳前缀码:由最优二叉树产生的前缀码。
-
例:下面给出的符号串集合中,构成前缀码的是
- A.
- B.
- C.
- D.
- A.
-
例:在通信中,设八进制数字出现的频率(%)如下:
采用2元前缀码,求传输数字最少的2元前缀码,画出最优二叉树,
并求传输个按上述比例出现的八进制数字需要多少个二进制数字?
若用等长的(长为3)的码字传输需要多少个二进制数字?
解:用100乘各频率为权,用Huffman算法求最优二叉树。
最优前缀码为:
传 ,
传 ,
传 ,
传 ,
传 ,
传 ,
传 ,
传 。
,等长编码需要 。
-