| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:初学者 求教 c# 哈夫曼树
取消只看楼主 加入收藏
tcz
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-18
结帖率:0
收藏
已结贴  问题点数:4 回复次数:1 
初学者 求教 c# 哈夫曼树
我的程序出错,请教高手指点。小弟不胜感激!

public class HuffmanTree
{
    private Node[] data;    // 结点数组
    private int leafNum;    // 叶子结点数目
 
    // 索引器
    public Node this[int index]
    {

        get
         {
             return data[index];
}
set
{
    data[index] = value;
}
}
 
// 叶子结点数目属性
public int LeafNum
    {
        get
         {
             return leafNum;
}
set
{
    leafNum = value;
}
}
 
// 构造器
public HuffmanTree (int n)
{
   Node[]  data = new Node[2*n-1];
leafNum = n;
}
 
// 创建哈夫曼树
public void Create()
{
   
 
    // 输入n 个叶子结点的权值
            for (int i = 0; i < leafNum; ++i)
            {
                data[i].Weight = Convert.ToInt32( Console.ReadLine());
             }
 

    //处理 n 个叶子结点,建立哈夫曼树
            for (int i = 0; i < this.leafNum - 1; ++i)
            {
               
               
                int max2;
                int tmp2;
                int max1 = Int32.MaxValue;
                max2 = Int32.MaxValue;
               int tmp1 = tmp2 = 0;
 
                //在全部结点中找权值最小的两个结点
                for (int j = 0; j < this.leafNum + i; ++j)
                {
                    if ((data[i].Weight < max1)  
&& (data[i].Parent == -1))
                    {
                        max2 = max1;
                        tmp2 = tmp1;
                        tmp1 = j;
                        max1 = data[j].Weight;
                    }
                    else if ((data[i].Weight < max2)  
&& (data[i].Parent == -1))
                    {
                        max2 = data[j].Weight;
                        tmp2 = j;
                    }
                }
 
                data[tmp1].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;
    }
}
}


    class Program
    {
        static void Main(string[] args)
        {
            HuffmanTree ht = new HuffmanTree(21);
            ht.Create();
        }
    }
}
搜索更多相关主题的帖子: 叶子 set 不胜感激 private public 
2013-04-18 22:23
tcz
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-18
收藏
得分:0 
回复 4楼 yhlvht
不好意思,Node是个类,在程序里已经定义 就是忘了把代码贴出来了。
2013-04-19 11:21
快速回复:初学者 求教 c# 哈夫曼树
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016374 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved