Huffman 树构建过程是自顶向下, 还是自底向上?

摘要: Huffman 树是一个经典算法. 本文讨论它的策略.

观点一: 自底向上

每次是将当前权值最小的两个节点进行合并, 获得一个新的节点, 权值是前两者之和.
从直观来讲, 不断获得 (子孙节点更多的) 分支节点, 最后才获得根节点, 所以是向底向上的.

观点二: 自顶向下

原问题具有 n n n 个节点, 可以直接看成 n n n 棵树的一个森林. 经过一次合并后, 变成了具有 n − 1 n - 1 n1 棵树的森林的合并问题.
将原问题直接转换成规模较上的子问题, 且子问题与原问题性质完全相同, 因此是自顶向下的.

相关问题: 归并排序

归并排序非递归版本先解决的是长度为 2 子序列的排列问题, 然后是长度为 4, 以此类推. 因此, 它是自底向上的.
归并排序递归版本看起来是自顶向下的, 但是最终的实现, 还是要把子序列进行合并, 所以仍然是自底向上的.

小结

我支持观点二. 不服来杠.

猜你喜欢

转载自blog.csdn.net/minfanphd/article/details/124072109