哈夫曼树构造

构造哈夫曼数,求解WPL值

关键点在于哈弗曼树的构造和遍历

将哈弗曼树的每一个结点存放在一个一维数组当中,其中每一个结点都有权值,双亲,左右孩子四个变量,提前输入想要构造的叶子节点的个数和权值,通过不断找出此一维数组中权值最小的两个结点构造成一棵二叉树的过程,最终n个叶子结点,经过n-1次结合,成为一棵二叉树。二叉树的遍历是通过叶子结点的parent,由于每新合成一个新结点,我都会更新这两个被合成结点的双亲为新和成结点在数组中的下标,所以可以通过不断遍历结点的双亲,判断是否为下标,或者是我初始时定义的-1,顺着哈弗曼树向上遍历,直至找到根结点。哈夫曼树构造_第1张图片

具体代码实现:

哈夫曼树构造_第2张图片
哈夫曼树构造_第3张图片
运行结果:
哈夫曼树构造_第4张图片

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