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

      

  • 相关阅读:
    移动端web初体验
    网页布局框架
    CSS 3D翻转相册动画特效
    move.js框架
    js照片墙拖拽特效
    团队编程项目作业2-团队编程项目开发环境搭建过程
    课后作业-阅读任务-阅读提问-1
    团队编程项目作业3
    阅读提问-2
    结对编程项目作业5
  • 原文地址:https://www.cnblogs.com/yinguojin/p/15729671.html
Copyright © 2011-2022 走看看