创建最佳二叉搜索树,与创建霍夫曼树相同?

时间:2012-11-27 22:18:06

标签: algorithm data-structures binary-search-tree

很快在这里学习决赛,我想知道在下面的问题中创建一个最佳的二叉搜索树是否与给定符号和频率创建一个霍夫曼树相同。

使用密钥K1<计算最佳二进制搜索树。 K2< K3< K4的概率:

p1 = .1  p2 = .2   p3 = .3  p4 = .1   
q0 = .15 q1 = .05  q2 = 0   q3 = .1

所以在这里我们将最低的两个概率配对并创建一个概率= n1 + n2的内部节点,然后配对下一个最低的两个概率,依此类推?

1 个答案:

答案 0 :(得分:4)

他们实际上是两个不同的问题。霍夫曼树生成不需要保留密钥顺序,而BST生成则需要。此外,霍夫曼树生成需要额外的节点来“加入”其他节点,而在BST中则不是这种情况(您加入已有节点的节点)。

对于“最佳”BST生成,您希望最小化所有节点深度的加权和(权重是节点的频率)。在这种情况下,p3应该是p2和p4的父级,p2应该是p1的父级。这会产生一个“加权和”:

Node Probability Depth Product Parent
K1   .1          2     .2      K2
K2   .2          1     .2      K3
K3   .3          0     0       None (root)
K4   .1          1     .1      K3
                       .5 (total, smaller than all other configurations)

目前还不清楚你对q0q3的意思,但如果这些也是所需BST中的节点,你仍然会尝试优化深度的加权和。