zoukankan      html  css  js  c++  java
  • c++ 实现哈夫曼树中遇见的问题

    为了提高效率求得 叶子 节点中权值最小的两个元素,我们需要使用堆数据结构它可以以O(logn)的复杂度

    取得n个元素中的最小元素。为了绕过堆的实现,我们可以使用标准模板库中相应的标准模板—优先队列。

    在使用队列前,需要做相应的预处理

    #include <queue>

    using namespace std;

    priority_queue<int> Q;  // 建立一个保存元素为int 的堆Q(注意:这样建立的堆默认为大根堆)

    //使用如下语句建立一个小根堆

    priority_queue<int vector<int>,greater<int>> (注意:这样的写法是错的,最后两个'>'之间要有空格)

    priority_queue<int vector<int>,greater<int> >  //为如果是两个连起来的>>蠢萌的编译器会把它认成输出符cout>>这个符号的

    堆的操作如下:

    Q.push()

    int a=Q.top()   //取出堆顶元素放在Q中

    Q.pop()  //弹出堆顶元素,取出后堆自动调整为一个小根堆

  • 相关阅读:
    【6.29】数组和方法
    【6.28】判断和循环
    【6.27】两个数交换的4种方法
    NodeJS学习笔记
    准备使用马克飞象写博客
    前端基础
    学习笔记
    数据结构 — Java链表
    Java 日期类型与字符串的相互转换
    Scala(一)基础
  • 原文地址:https://www.cnblogs.com/houchen/p/9017107.html
Copyright © 2011-2022 走看看