哈夫曼树详解

哈夫曼 

哈夫曼树详解_第1张图片

哈夫曼树的基本概念 

哈夫曼树详解_第2张图片

哈夫曼树详解_第3张图片

哈夫曼树详解_第4张图片

哈夫曼树详解_第5张图片

权(weight)又称权重:将树中结点赋给一个有着某种含义的数值,(具体的意义根据树使用的场合确定)则这个数值称为该结点的权。比如之前提到的判断树中5%表示对应分数段人在总人数中的比例
结点的带权路径长度:从根结点到该结点之间的路径长度与结点上权的乘积

哈夫曼树详解_第6张图片

哈夫曼树详解_第7张图片

哈夫曼树

哈夫曼树详解_第8张图片

哈夫曼树详解_第9张图片

哈夫曼树详解_第10张图片

哈夫曼树详解_第11张图片

哈夫曼树详解_第12张图片

哈夫曼树详解_第13张图片

总结

哈夫曼树详解_第14张图片

在构造哈夫曼树之前先要了解他的存储结构(哈夫曼树=二叉树)有顺序存储和链式存储 

哈夫曼树详解_第15张图片

ps:数组名本质上是首元素地址,所以这样既可以理解为定义了一个指针也可以理解为定义了一个数组

之所以用结构体数组是因为存储的值比较多 

哈夫曼树详解_第16张图片

1.构造森林全是根(既没有双亲也没有孩子)初始化

2.循环1-->n存叶子结点从n+1-->2n-1(总个数)

for(i=n+1;i<=2n-1;i++){

//选权值小的二个造新树

//删除二小添新人

怎么删除一棵树(让他不再是根而是别人的子树)

给他们的

给3号和6号的parent赋值9号(构造出的根结点)并修改9号的左右孩子

//重复2、3 

在parent=0的树(其实parent不为0是对应根结点的子树)中再选2小造新树

关键是什么时候结束

森林只有一棵树==>一个根结束

}

哈夫曼树详解_第17张图片

哈夫曼树详解_第18张图片

哈夫曼树详解_第19张图片

哈夫曼树详解_第20张图片

哈夫曼树详解_第21张图片

哈夫曼树详解_第22张图片

你可能感兴趣的:(数据结构)