膇哈夫曼树的构造 羅构造哈夫曼树的过程是这样的荿一、构成初始集合蕿对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。(为方便在计算机上实现算法,一般还要求以Ti的权值Wi的升序排列。) 芆二、选取左右子树蒄在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。 腿三、删除左右子树莆从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。 莄四、重复二和三两步,袄重复二和三两步,直到集合F中只有一棵二叉树为止。袀举个例子莈有个序列是(7,9,2,6,32,3,21,10)螆叫你求哈夫曼树芃步骤一:把这些点都看成是一个只有根结点的树的集合F蚀葿 袅步骤二,选2个值最小的树 蚂莀 芇步骤三:在这些树的集合F中删除这2棵树芇膂 膁然后把 构成一颗二叉树莈变成了(5 = 2 + 3)莅然后把这个树加入到集合F袅袁 荿蒄 芅5代表这棵树的权值薂然后继续上述步骤膇肯定是选 5 和 6 袆把这2个构成二叉树蚄莂 芈在F中删除5 6 加入11这棵树羅变成了肃肂 艿芇 薃继续上述步骤袃选7 和 9肇蒅 羂在F中删除7 和9荿 加入16这棵树膈变成了薄莁 聿膀 袆继续上述步骤肅选 10 和11螀羇肄 蒄在F中删除10 和11 加入21这棵树薀肈 莇蒄螁 薁羆 袄继续上述步骤薂选16和21 (有2个21,随便选哪个)莈我选那个只有一个根结点的21好了莈16和21构成二叉树 芃节葿 蒇在F中删除这16和21这两棵树蚃加入37这棵树羃薁 薅莆螃 芈羈袅 蒃继续上述步骤莀选21和32肆构成二叉树芅羀 蒁在F中删除21和32这2两棵树蒈加入53这棵树蚄螀 芈
哈夫曼树的构造 来自淘豆网m.daumloan.com转载请标明出处.