数据结构-哈夫曼树(Huffman)
哈夫曼树 哈夫曼树概述 (1)总括: 哈夫曼(Huffman)树又称为 最优二叉树 ,是一类 带权路径长度 最短 的树 (2)树的路径长度: 树根到每个结点的路径长度 之和 (对于 节点个数相同 的二叉树来说, 路径长度最短树是完全二叉树 ) (3)权值( Weight ): 每个叶子结点所赋予的特殊值 (4)叶子带权路径长度: 一个叶子结点的权值 与 该结点到根的路径长度 的 乘积 (5)二叉树的带权路径长度( Weighted Path Length ): 简记 WPL , 所有 叶子带权路径长度之和 WPL= (w是第k个叶子结点的权值,l为第k个叶子结点的路径长度) 给定n个叶子结点,在这些结点构造的二叉树中, WPL最小 的二叉树称为哈夫曼树 哈夫曼树的构造 (1)思路: 必须使权值相对大的叶子结点更靠近根结点 。 (2)哈夫曼算法: 左右孩子都为空 (说白了就是哈夫曼树的原始叶子节点) 选取两棵根节点最小的树 作为左右子树构造一棵新的二叉树,并且该二叉树的根节点权值为左右子树根结点权值之和 删除这两棵被结合的二叉树 ,同时 新的二叉树加入F 重复b c ,直到F中 只剩下一棵二叉树 ,这棵二叉树就是哈夫曼树 (3)总结下规律 成为哈夫曼树的叶子结点 ,所以: 原始二叉树数n=哈夫曼树叶子结点数 共结合n-1次 ,每次结合新形成一个结点 具有n个叶子结点的哈夫曼树 具有n