首先我们来看我们自己按照哈夫曼树的构造方法得出的答案:
- .小的数放在左边
- .当有重复的权值,也就是我们通过构造得到的树的权值和我们已知的权值重复的时候,首先使用已知的权值。
如图:
我们看到20在23的左边,一般情况下,这样的树构造是没有问题的,但是:
我们构造哈弗曼树的目的是通信,通过编码代替我们想要传达的值,所以一定要注意,编码值,也就是标识(类似我们的身份证号,唯一标识),是不允许重复的。
我们在我们自己的解答中可以看到11和23的哈夫曼编码都是[01];这样的情况是不允许存在的,所以在这中特定情况下我们需要将23放到20的左边来解决这个问题。
也就是答案所给出的如图:
这样我们就不会出现同一个身份证号对应不同的人了。