首先,将权值从小到大排序,得到如下表格:

| 字符 | 权值 | |------|------| | 'a' | 2 | | 'b' | 3 | | 'c' | 4 | | 'd' | 7 | | 'e' | 8 | | 'f' | 9 |

接着,构造哈夫曼树。首先选取权值最小的两个节点 'a' 和 'b',合并为一个新节点 'ab',其权值为 2+3=5。得到以下树:

    'ab'
   /  \
  'a'    'b'

接着,选取权值最小的两个节点 'ab' 和 'c',合并为一个新节点 'abc',其权值为 5+4=9。得到以下树:

    'abc'
   /   \
  'ab'    'c'
 /  \
'a'   'b'

继续选取权值最小的两个节点 'abc' 和 'd',合并为一个新节点 'abcd',其权值为 9+7=16。得到以下树:

     'abcd'
    /    \
  'abc'     'd'
 /  \
'a'    'b'

接着,选取权值最小的两个节点 'abcd' 和 'e',合并为一个新节点 'abcde',其权值为 16+8=24。得到以下树:

      'abcde'
     /     \
   'abcd'     'e'
  /   \   
'abc'   'd'
 /  \
'a'   'b'

最后,选取权值最小的两个节点 'abcde' 和 'f',合并为一个新节点 'abcdef',其权值为 24+9=33。得到以下树:

       'abcdef'
       /     \
     'abcde'    'f'
     /   \  
   'abcd'   'e'
  /   \
'abc'   'd'
 /  \
'a'   'b'

根据哈夫曼树的性质,从根节点到每个叶子节点的路径上,左子树为 0,右子树为 1,即可得到各个字符的哈夫曼编码:

| 字符 | 权值 | 哈夫曼编码 | |------|------|-----------| | 'a' | 2 | '000' | | 'b' | 3 | '001' | | 'c' | 4 | '01' | | 'd' | 7 | '10' | | 'e' | 8 | '110' | | 'f' | 9 | '111' |

最后,计算带权路径长度 WPL。根据哈夫曼树的定义,WPL 等于各个叶子节点的权值乘以其到根节点的路径长度之和。因此,有:

WPL = 2×3 + 3×3 + 4×2 + 7×2 + 8×2 + 9×2 = 72

因此,该哈夫曼树的带权路径长度为 72。

哈夫曼树构造及编码:6个字符的权值集合W={2,3,4,7,8,9}的案例分析

原文地址: https://www.cveoy.top/t/topic/nRHC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录