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;
    };

      

  • 相关阅读:
    BZOJ2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
    BZOJ2044: 三维导弹拦截
    BZOJ2982: combination
    Solidity(address的四个方法)
    Solidity基础
    如何搭建以太坊的私有链
    挖矿
    智能合约
    密码学
    比特币
  • 原文地址:https://www.cnblogs.com/yinguojin/p/15729671.html
Copyright © 2011-2022 走看看