zoukankan      html  css  js  c++  java
  • 学习记录:哈夫曼树

    哈夫曼树

    基本概念

    • 路径:在一棵树中, 从一个节点到另一个节点经过的所有结点,称为两个节点的路径。(图中淡蓝色为路径)

    • 路径长度:从出发节点到目标节点,每经过一个节点,路径长度+1。可以理解为两个节点中间的边的数量。(标记为边的数量)

    • 节点的权:每一个节点的权重。这个权重表示了这个节点的某种特性。(字母旁的数字)

    • 带权路径长度:表示从根节点到该节点的路径长度与该节点的权的乘积。(例:(D=2*1=2)

    • 树的带权路径长度:一个树上所有叶节点带权路径长度的和((Sum=2*1+2*2+2*3+2*4=20)

    J6vUsI.jpg

    哈夫曼树的定义

    哈夫曼树就是在给定叶节点的情况下,树的带权路径长度最小的树。也被称为“最优二叉树”。

    构建过程

    这里设要进行建树的数字为(int num[]={2,3,5,6,7};)

    1. 将要建树的数字构建为优先队列,方便数据的处理。
    2. 取出优先队列的前两个数,将其组合为一个子树。
    3. 重复2直到队列中仅剩一个数,这时构建完成。

    JceQeO.jpg

    代码实现

    
    
  • 相关阅读:
    xhr
    原生js的博客
    webstorm调试Node的时候配置
    multiparty
    bluebird
    Nodejs+express+angularjs+mongodb
    mustache.js
    ModelProxy 前端接口配置建模框架
    浏览器跨域访问解决方案
    前端性能优化补充篇
  • 原文地址:https://www.cnblogs.com/Salty-Fish/p/12778757.html
Copyright © 2011-2022 走看看