美文网首页
2018-06-17 机试准备07

2018-06-17 机试准备07

作者: Huxx499 | 来源:发表于2018-06-17 17:27 被阅读0次

数据结构

二、哈夫曼树(栈部分还没做完)


定义:

给定n个结点和它们的权值,以它们为叶子节点构造一棵带权路径长度和最小的二叉树,该二叉树即为哈夫曼树,也被称为最优树。

基础:

从一个结点到另一个结点的路径上所需经过的边的个数称为该路径的长度;路径长度再乘以结点的权值称为该结点的带权路径长度。此类题一般都是求解最小带权路径长度和

实现方法:

堆数据结构--可以以O(logn)的复杂度取得n个元素中的最小元素--小顶堆

标准模板库:

优先队列:priority_queue<int> Q; (大顶堆)  

                  priority_queue<int, vector<int>, greater<int> > Q; (小顶堆)  

                  这里>>连在一起会报错:[Error] '>>' should be '> >' within a nested template argument list 因为>>会被当作右移运算符 不过新标准的C++好像就没问题了

代码部分:

Q.push(x)   a=Q.top()  Q.pop() 弹出堆顶元素后堆会自动调整为一个新的小顶堆

求哈夫曼树的时间复杂度:

O(nlogn)


例3.3 

 很简单 掌握之前的逻辑就好了 主要是回顾堆的基本操作哈夫曼树求法

可以补充的两个函数:Q.empty() 和 Q.size() 元素个数


之后需要补充更多应用 如哈夫曼编码、多个数的两两合并

相关文章

  • 2018-06-17 机试准备07

    数据结构 二、哈夫曼树(栈部分还没做完) 定义: 给定n个结点和它们的权值,以它们为叶子节点构造一棵带权路径长度和...

  • 2018-06-17 机试准备08

    数据结构 三、二叉树 遍历:前序(中左右)、中序(左中右)、后序(左右中)--------递归实现 一、例3.4 ...

  • 这可能是vue-cli最全的解析了……

    --- title: 这可能是vue-cli最全的解析了…… date: 2018-06-17 10:00:07 ...

  • 这可能是vue-cli最全的解析了……

    title: 这可能是vue-cli最全的解析了…… date: 2018-06-17 10:00:07 tags...

  • 机试

    package com.example.js; import android.app.Activity; impo...

  • 2018-06-09 机试准备01

    今天开始正式日常做机试训练(参考书:计算机考研--机试指南)记录一些问题/解决办法/知识回顾/易错点/心得之类的。...

  • 2018-06-10 机试准备02

    日期类: 一、例2.3 求两个日期间的天数差;区间问题:统一区间 自己的写法 思路/错误: 1)统一到0000年0...

  • 2018-06-13 机试准备03

    Hash值的应用 将存储位置与数据本身对于起来的存储手段 一、例2.5 统计同成绩学生人数 在已知该例可以用Has...

  • 2018-06-13 机试准备04

    排版题 一、例2.7 输出梯形 该规律顺序与输出顺序一致,可以从上至下、从左至右应用规律。 二、例2.8 叠筐 图...

  • 2018-06-14 机试准备05

    查找 一、例2.9 找x 此题很简单 线性遍历数组查找 O(m) 只是为了回忆该题型 发现自己写的和参考实例不同的...

网友评论

      本文标题:2018-06-17 机试准备07

      本文链接:https://www.haomeiwen.com/subject/hmvweftx.html