zoukankan      html  css  js  c++  java
  • 哈夫曼树

    一、哈夫曼树的概念

      哈夫曼树又叫最优二叉树,显然哈夫曼树是建立在二叉树的基础上。

      我们先来了解几个基础概念:

        树根到树的每一个结点的路径长度之和为树的路径长度

        在结点数目相同的二叉树中,完全二叉树的路径长度最短。

        在一些应用中,给树中结点赋予某种意义的数值,此数值称为结点的权

        结点到树根之间的路径长度与该节点权的乘积称为结点的带权路径长度

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

      结点数量相同且每个节点的权值相同的n个叶子结点构成的所有二叉树中,树的带权路径长度最小的二叉树称为哈夫曼树

      例如下图,c就是哈夫曼树:

      

     二、哈夫曼树的C++声明

    template <typename ElemType>
    class HuffmanTree:public SeqTree<ElemType>
    {
        public:
            void display();
            void displayList();
            void dispalyTree();
            void createHuffmanInsideNode();
            void createHuffmanSeqTree();
            void huffmanCoding();
            int HuffmanSqListStatus();
            void inputHuffmanLeafList();
            bool isHuffmanSqTreeEmpty();
        private:
            MyHuffmanTreeSqList huffSqList;
            MySeqTree<EleType> huffSqTree;
    };

      

  • 相关阅读:
    java之SFTP上传下载
    java之FTP上传下载
    JUnit单元测试%MODULE_WORKING_DIR%' does not exist
    MySQL 在线DDL "gh-ost"
    MySQL 主从复制错误1837
    <高性能MySQL> 阅读笔记
    Redis cluster 4.0.9 迁槽不影响读写
    MySQL left join 用法与实例
    Linux 日期 date +%F-%T-%N
    MySQL 使用infobin查找binlog中大事务
  • 原文地址:https://www.cnblogs.com/yinguojin/p/15729671.html
Copyright © 2011-2022 走看看