zoukankan      html  css  js  c++  java
  • 最优二叉树(哈夫曼树)

    预备知识:

      路径:从树中一个结点到另一个结点之间的通路,路径上的分支数目成为路径长度;

        树的路径长度:从树根到每一个叶子之间的路径长度之和;

      结点的带权路径长度:从该结点到树根之间的路径长度与该结点权值的乘积;

      树的带权路径长度:所有叶子结点的带权路径长度之和;

      结构相同的任意两颗二叉树,由于他们的叶子结点权值可能不同,所以他们的带权路径长度也会不同;哈夫曼树是指带权路径长度最小的二叉树;

    构造哈夫曼树的方法:

      假设有一组权值{5,29,7,8,14,23,3,11},下面我们将利用这组权值演示构造哈夫曼树的过程。

      第一步:以这8个权值座位根节点的权值构造具有8棵树的森林;

      

      第二步:从中选择两个根的权值最小的树3,5座位左右子树构成一棵新树,新树根节点的权值为3+5,并将这两棵树从森林中删除,并将新树添加进去;

      第三步:重复第二步过程,直到森林中只有一棵树为止,此处选择7,8;

      第四步:

      第五步:

      第六步:

      第七步:

    哈夫曼编码:

    哈夫曼树中只存在叶子节点和度为2的结点。叶子节点的个数=度为2的节点数+1。

  • 相关阅读:
    渗透脚本快速生成工具Intersect
    Visual Studio 2017创建XAML文件
    Windows命令远程执行工具Winexe
    解决Visual Studio 2017隐藏“高级保存选项”命令
    Web应用扫描测试工具Vega
    网易轮播图
    Dom
    通过克隆实现无缝滚动轮播图
    函数
    boostrap
  • 原文地址:https://www.cnblogs.com/ImaY/p/4309863.html
Copyright © 2011-2022 走看看