最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#求解哈夫曼樹(shù),實(shí)例代碼

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

復(fù)制代碼 代碼如下:

  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個(gè)值
                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;
            }
        }


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

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

相關(guān)文章

最新評(píng)論

城口县| 兴宁市| 桃江县| 固安县| 乳山市| 上高县| 盐源县| 西安市| 新营市| 陇西县| 平昌县| 台北市| 横山县| 中牟县| 五莲县| 屯昌县| 牡丹江市| 芮城县| 大足县| 左云县| 伽师县| 阳信县| 巴林左旗| 剑川县| 马尔康县| 南澳县| 乌兰县| 蒙城县| 北票市| 宜宾县| 鄂尔多斯市| 伊金霍洛旗| 拉萨市| 昌都县| 溆浦县| 若羌县| 呼伦贝尔市| 晋江市| 泗洪县| 舞钢市| 北碚区|