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

      

  • 相关阅读:
    PHP设计模式之工厂模式
    ThinkPHP删除栏目(多)
    斐波纳契数列递归和非递归算法
    单链表反转的实现
    找出n个数中最大的k个数
    实验四:掌握Linux系统的构建和调试方法
    npm如何上传自己的包
    简要谈一下部署时候的操作
    sass的基本语法及使用
    this 指向问题
  • 原文地址:https://www.cnblogs.com/yinguojin/p/15729671.html
Copyright © 2011-2022 走看看