思维导图:
归并树的定义:
例:
另一种理解方式:
1、每个数字代表了一个归并段的长度
2、121就代表了总的数据元素的个数
3、树的深度代表了读或写的次数
4、总的IO的读写次数=(读+写)✖元素个数 = (2+2)×121=484
但是这个只是一颗普通的二叉树,由上图可知,想要IO读写次数最少,就要带权路径长度最优,带权路径长度最优时为哈夫曼树
最佳归并树(本质是一颗哈夫曼树):
当归并树为哈夫曼树时,IO次数最小
所有的初始归并段一定能构造出一颗完美的哈夫曼树吗?
答:不是
我们称这种初始归并段不够而补充的段称为虚短
怎么选择补充虚短的个数?
总的节点个数 = 孩子节点总数+根节点,即:
度为0的节点+度为m的节点 = 孩子节点总数+根节点,即:
n0 + nm = m * nm + 1,即:
n0 = (m-1)nm + 1