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

      

  • 相关阅读:
    juniper ALARM亮红灯
    笔记本设置wifi热点
    基于apache+php+mysql 编译安装详解(转载)
    CentOS6.X 安装MySQL 5.X
    spring 多数据源切换
    Java Reflection(十二):动态类加载与重载
    Java Reflection(十一):动态代理
    Java Reflection(十):数组
    Java Reflection(九):泛型
    Java Reflection(八):注解
  • 原文地址:https://www.cnblogs.com/yinguojin/p/15729671.html
Copyright © 2011-2022 走看看