哈夫曼树
相关基础概念
路径长度:从一个节点到另一个节点之间的路径条数目
从根节点到第L层节点路径长度是L-1
树的路径长度: 从根节点出发到每个节点的路径长度之和
节点的权:如果给树中每个节点赋予一个某种含义的数值,该数值称为该节点的权值
节点的带权路径长度:从根节点到该节点的路径长度与该节点的权值的乘积
树的带权路径长度:所有叶子节点的带权路径长度之和 WPL
成绩: <60 60~69 70~79 80~89 90~100 等级 E D C B A 比例 5% 30% 40% 15% 10% 普通带权二叉树的WPL: WPL=1*5+2*30+3*40+4*15+4*10 = 285 哈夫曼树的WPL: WPL=40+2*30+3*15+4*5+4*10 = 205 WPL是评价一棵带权二叉树优劣重要标准
哈夫曼树:一定是一棵WPL最小的带权二叉树
构建哈夫曼树:
1、把n个带权节点先存储一个集合F中,每个节点的左右子树都为空
2、从F中选取根节点的权值最小的两个节点作为左右子树构成一棵新的二叉树,左小右大,这颗二叉树的根节点的权值等于两个子树权值之和
3、从F中删除刚刚取出来的两个节点,并把新形成的二叉树根节点放入F中
4、重复步骤2、3,直到F中只剩下一棵树,就是哈夫曼树