f表示频率(图中方框上面的数字),d表示深度
图中少了 x=z.left; y=z.right
因为x和a交换,b和y交换,所以最后做差时,就是(深度差)2*(f(a)-f(x))+2*(f(b)-f(y))>=0
这里多说明一下,因为这已经是最优前缀码了,所以频率低的肯定深度高,要不然让它和别的换一下,两颗树一作差(交换前-交换后),还是深度差*(小-大)<0,所以频率最低的肯定深度最高。
频率第二低的根据做树要求其实就只能跟频率最低的是兄弟结点。
f表示频率(图中方框上面的数字),d表示深度
图中少了 x=z.left; y=z.right
因为x和a交换,b和y交换,所以最后做差时,就是(深度差)2*(f(a)-f(x))+2*(f(b)-f(y))>=0
这里多说明一下,因为这已经是最优前缀码了,所以频率低的肯定深度高,要不然让它和别的换一下,两颗树一作差(交换前-交换后),还是深度差*(小-大)<0,所以频率最低的肯定深度最高。
频率第二低的根据做树要求其实就只能跟频率最低的是兄弟结点。