已知下列字符a、b、c、d、e、f、g的权值分别为4,13,8,5,3,9请构造哈夫曼树,同一层节点按照值从小到大顺序填写,根节点是第一层。以此类推第一层节点
时间: 2023-12-28 18:52:34 浏览: 80
首先,我们需要将节点按照权值从小到大排序,得到:e(3)、g(9)、a(4)、d(5)、c(8)、f(9)、b(13)。
接下来,我们取出权值最小的两个节点e(3)和g(9),构造一颗新的二叉树,它们分别作为左右子节点,且左子节点的权值小于右子节点。新树的根节点权值为左右子节点权值之和,即3+9=12。将新树插入原节点序列中,得到:a(4)、d(5)、c(8)、f(9)、b(13)、e(3, g)。
再次选取权值最小的两个节点a(4)和d(5),构造一颗新的二叉树,它们分别作为左右子节点,且左子节点的权值小于右子节点。新树的根节点权值为左右子节点权值之和,即4+5=9。将新树插入原节点序列中,得到:c(8)、f(9)、b(13)、e(3, g)、a(4, d)。
继续选取权值最小的两个节点c(8)和f(9),构造一颗新的二叉树,它们分别作为左右子节点,且左子节点的权值小于右子节点。新树的根节点权值为左右子节点权值之和,即8+9=17。将新树插入原节点序列中,得到:b(13)、e(3, g)、a(4, d)、c(8, f)。
最后,选取权值最小的两个节点b(13)和e(3, g),构造一颗新的二叉树,它们分别作为左右子节点,且左子节点的权值小于右子节点。新树的根节点权值为左右子节点权值之和,即13+12=25。此时,所有节点都已经合并到一颗哈夫曼树中。
哈夫曼树如下所示:
```
25
/ \
/ \
12 13
/ \ |
/ \ |
9 3,g |
/ \ |
a d |
|
8, f |
/ \
/ \
4 5,c
```