哈夫曼树和哈夫曼编码——二叉排序树——最小生成树

哈夫曼树和哈夫曼编码

1.将权值从小到大排序;2.然后每次选取最小的两个节点,组成新的节点(原来两个节点的 和)放入有序序列;3.接着选择最小的两个。

哈夫曼树的左分支为0,右分支为1,从根节点到每个节点比如经历两次右分支则,编码就是11.

二叉排序树

选取第一个为根节点,然后把下一个要插入的节点与根节点进行比较,大的放在右子树,小的放在左子树位置。

最小生成树

不管是哪种最小生成树的方法,权值之和都是唯一的。

克鲁斯卡尔:把所有的权值按照从小到大排列,然后去掉所有的边,按照从小到大连接,然后删除形成环的边。

prim普里姆算法:写出邻接矩阵,此部分转自https://blog.csdn.net/weinierbian/article/details/8059129/


———————>先写出其邻接矩阵

第一步:从①开始,①进集合,用与集合外所有顶点能构成的边中找最小权值的一条边
①——②权6
①——③权1 -> 取①——③边
①——④权5

 

第二步:③进集合,①,③与②,④,⑤,⑥构成的最小边为
①——④权5
③——⑥权4 -> 取③——⑥边

第三步:⑥进集合,①,③,⑥与②,④,⑤构成的各最小边
①——②权6
③——②权5
⑥——④权2 -> 取⑥——④边

第四步:④进集合,①,③,⑥,④与②,⑤构成的各最小边
①——②权6
③——②权5 -> 取③——②边
⑥——⑤权6

第四步:②进集合,①,③,⑥,②,④与⑤构成的各最小边
②——⑤权3 -> 取②——⑤边


你可能感兴趣的:(哈夫曼树)