博客
关于我
Java基础题:哈夫曼树
阅读量:375 次
发布时间:2019-03-05

本文共 485 字,大约阅读时间需要 1 分钟。

树的带权路径长度(WPL)是衡量一棵树的总权重的重要指标。它等于每个节点的带权路径长度之和。每个节点的带权路径长度计算方式为:当前节点的权重乘以从当前节点到根节点所经过的“边”数。

为了构造一棵带权路径最小的树(哈夫曼树),我们需要按照以下步骤进行:

  • 将所有节点按照从小到大排序,形成一个队列:2, 3, 6, 8。
  • 重复以下步骤直到队列为空:
    • 取出队列中两个最小的节点,构造一颗子树,将它们的和作为父节点,并将父节点放回队列中。
    • 确保右边的子树值大于左边的子树值。
  • 当队列为空时,去掉所有辅助节点,得到一颗哈夫曼树。
  • 通过上述方法,我们最终构造出一棵哈夫曼树。为了计算带权路径长度(WPL),我们需要:

    • 2 * 3(从2到根节点经过1条边)
    • 3 * 3(从3到根节点经过2条边)
    • 6 * 2(从6到根节点经过3条边)
    • 8 * 1(从8到根节点经过4条边)

    将这些值相加,得到WPL = 23 + 33 + 62 + 81 = 35。

    最终,优化后的哈夫曼树结构如下:

    • 根节点为3,左子树为2,右子树为6。
    • 6的左子树为3,右子树为8。
    • 3的左边没有子树,右边没有子树。

    转载地址:http://xknwz.baihongyu.com/

    你可能感兴趣的文章
    Vue.js Element Basic组件使用
    查看>>
    android 头像选择,裁剪全套解决方案,你值得拥有!
    查看>>
    MapReduce
    查看>>
    springboot swagger2
    查看>>
    shell(十)case的几个典型应用
    查看>>
    Linux环境变量配置错误导致命令不能使用(杂谈)
    查看>>
    openstack安装(六)镜像glance服务安装
    查看>>
    openstack安装(九)网络服务的安装--控制节点
    查看>>
    shell编程(六)语言编码规范之(变量)
    查看>>
    vim杂谈(三)之配色方案
    查看>>
    vim杂谈(五)之vim不加载~/.vimrc
    查看>>
    Linux杂谈之终端快捷键
    查看>>
    vimscript学习笔记(二)预备知识
    查看>>
    vimscript学习笔记(三)信息打印
    查看>>
    awk杂谈之数组习题
    查看>>
    SSM项目中遇到Could not autowire. No beans of ‘XXX‘ type found.错误
    查看>>
    Linux网络属性配置详解
    查看>>
    Python(三十)类的理解
    查看>>
    Extjs布局详解
    查看>>
    Android数据库
    查看>>