PTA_数据结构与算法题目集(中文)_7-9 Huffman Codes (30 分)_简洁版解法

该博客介绍了如何利用哈夫曼树解决PTA数据结构与算法题目,重点阐述了在构建哈夫曼树时使用结构体数组和线性查找最小值的方法,适用于数据量不大的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 我们在分析哈夫曼树建立规则后可知,在所有(n个)数据作为子叶节点时,需且仅需(n-1个)连接点来构成完整的哈夫曼树。故,我们设置一个大小为2*n的结构体数组并使用其中1到2*n-1(共计n + n-1个位子)来建立哈夫曼树。
  2. 每次我们通过线性查找得到2个最小值,并做标记。这时,我们仅仅需要从n+1这个位置开始 记录 最小两值所处位置 直至2*n-1这个位置,而2*n-1这个位置既是我们的头结点。
  3. 每次我们检查学生数据仅仅需要比较min_length的长度段。
  4. 以上的处理针对型较强,仅仅适合这道数据量不多的题目。
  • 我的代码:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define INF 0x3f3f3f3f
    
    typedef struct node {
    	int val;
    	int left, right;
    }node, *np;
    np nn;
    int n, m, huf = 0;
    bool mark[126];
    
    void buildHuff(int id)
    {
    	int min1 = INF, min2 = INF, m1=-1, m2=-1;
    	for (int i = 1; i <= id - 1; i++)
    		if (mark[i])
    		{
    			if (nn[i].val < min1)
    			{
    				min2 = m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值