欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#求解哈夫曼樹,實例代碼

 更新時間:2013年04月22日 14:20:39   作者:  
C#求解哈夫曼樹,實例代碼,需要的朋友可以參考一下

復制代碼 代碼如下:

  class HuffmanTree
    {
        private Node[] data;
        public int LeafNum { get; set; }
        public Node this[int index]
        {
            get { return data[index]; }
            set { data[index] = value; }
        }
        public HuffmanTree(int n)
        {
            data = new Node[2 * n - 1];
            for (int i = 0; i < 2 * n - 1; i++)
            {
                data[i] = new Node();
            }
            LeafNum = n;
        }
        public void Create(List<int> list)
        {
            int min1;
            int min2;
            int tmp1, tmp2;
            for (int i = 0; i < list.Count; i++)
            {
                data[i].Weight = list[i];
            }              
            for (int i = 0; i < LeafNum-1; i++)
            {
                min1 = min2 = int.MaxValue;
                tmp1 = tmp2 = 0;

               //獲取數(shù)組中最小的2個值
                for (int j = 0; j < LeafNum + i; j++)
                {
                    if (data[j].Weight<min1&&data[j].Parent == -1)
                    {
                        min2 = min1;
                        tmp2 = tmp1;
                        min1 = data[j].Weight;
                        tmp1 = j;
                    }
                   else if (data[j].Weight < min2 && data[j].Parent == -1)
                    {
                        min2 = data[j].Weight;
                        tmp2 = j;
                    }                
                }
                data[tmp1].Parent = this.LeafNum + i;
                data[tmp2].Parent = this.LeafNum + i;
                data[this.LeafNum + i].Weight = data[tmp1].Weight + data[tmp2].Weight;
                data[this.LeafNum + i].LChild = tmp1;
                data[this.LeafNum + i].RChild = tmp2;
            }
        }


//樹的結(jié)點(樹是用數(shù)組保存的) 

public class Node
    {
        public int Weight { get; set; }//權值
        public int LChild { get; set; }//左孩子在數(shù)組中的位置
        public int RChild { get; set; }//右孩子在數(shù)組中的位置
        public int Parent { get; set; }//父節(jié)點在數(shù)組中的位置
        public Node()
        {
            Weight = 0;
            LChild = -1;
            RChild = -1;
            Parent = -1;//-1表示沒有
        }
        public Node(int weight,int lChild,int rChild,int parent )
        {
            this.Weight = weight;
            this.LChild = lChild;
            this.RChild = rChild;
            this.Parent = parent;
        }
    }

相關文章

  • C#中的虛函數(shù)virtual

    C#中的虛函數(shù)virtual

    這篇文章介紹了C#中的虛函數(shù)virtual,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 利用C#/VB.NET實現(xiàn)PPT轉(zhuǎn)換為HTML

    利用C#/VB.NET實現(xiàn)PPT轉(zhuǎn)換為HTML

    利用PowerPoint可以很方便的呈現(xiàn)多媒體信息,且信息形式多媒體化,表現(xiàn)力強。但難免在某些情況下我們會需要將PowerPoint轉(zhuǎn)換為HTML格式,本文就為大家整理了轉(zhuǎn)換方法,希望對大家有所幫助
    2023-05-05
  • C# 使用 log4net 日志組件的方法

    C# 使用 log4net 日志組件的方法

    這篇文章主要介紹了C# 使用 log4net 日志組件的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • c#中 String和string的區(qū)別介紹

    c#中 String和string的區(qū)別介紹

    String和string的區(qū)別有哪些,想有很多朋友都不知道吧,在本文將為大家詳細介紹下,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-10-10
  • C#學習筆記之狀態(tài)模式詳解

    C#學習筆記之狀態(tài)模式詳解

    這篇文章主要為大家詳細介紹了C#學習筆記之狀態(tài)模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • C#全局熱鍵設置與窗體熱鍵設置實例

    C#全局熱鍵設置與窗體熱鍵設置實例

    這篇文章主要介紹了C#全局熱鍵設置與窗體熱鍵設置實例,對C#全局熱鍵設置與窗體熱鍵設置的實現(xiàn)方法與具體代碼進行了詳細的介紹,需要的朋友可以參考下
    2014-10-10
  • c#實現(xiàn)的操作oracle通用類

    c#實現(xiàn)的操作oracle通用類

    這篇文章主要介紹了c#實現(xiàn)的操作oracle通用類,用來操作oracle數(shù)據(jù)庫十分的方便,需要的朋友可以參考下
    2014-08-08
  • C#中通過LRU實現(xiàn)通用高效的超時連接探測

    C#中通過LRU實現(xiàn)通用高效的超時連接探測

    這篇文章主要介紹了c#中通過LRU實現(xiàn)通用高效的超時連接探測,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-11-11
  • c# 實現(xiàn)簡單的串口通訊

    c# 實現(xiàn)簡單的串口通訊

    這篇文章主要介紹了c# 如何實現(xiàn)簡單的串口通訊,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03

最新評論