首页 > 其他分享 >1020打卡

1020打卡

时间:2023-10-20 23:14:43浏览次数:34  
标签:hftree 1020 weight min int length 打卡 data

哈夫曼树

#include <iostream>
using namespace std;

struct node {
    int lchild;
    int rchild;
    int parent;
    int weight;
};

struct hftree {
    node* data;
    int length;
};

hftree* inithf(int* weight, int length) {
    hftree* t = new hftree;
    t->data = new node[length * 2 - 1];
    t->length = length;
    for (int i = 0; i < length; i++) {
        t->data[i].weight = weight[i];
        t->data[i].lchild = -1;
        t->data[i].rchild = -1;
        t->data[i].parent = 0;
    }
    return t;
}

int* selectmin(hftree* t) {
    int* min = new int[2];
    int min1 = 100000000;
    int min2 = 100000000;
    int minindex1 = -1;
    int minindex2 = -1;
    for (int i = 0; i < t->length; i++) {
        if (t->data[i].parent == 0) {
            if (t->data[i].weight < min1) {
                min2 = min1;
                minindex2 = minindex1;
                min1 = t->data[i].weight;
                minindex1 = i;
            }
            else if (t->data[i].weight < min2) {
                min2 = t->data[i].weight;
                minindex2 = i;
            }
        }
    }
    min[0] = minindex1;
    min[1] = minindex2;
    return min;
}

void creathftree(hftree* t) {
    int n = t->length;
    for (int i = n; i < 2 * n - 1; i++) {
        int* min = selectmin(t);
        t->data[min[0]].parent = i;
        t->data[min[1]].parent = i;
        t->data[i].weight = t->data[min[1]].weight + t->data[min[0]].weight;
        t->data[i].lchild = min[0];
        t->data[i].rchild = min[1];
        t->data[i].parent = 0;
        t->length++;
    }
}

void printhftree(hftree* t, int index) {
    if (index != -1) {
        cout << t->data[index].weight << ' ';
        printhftree(t, t->data[index].lchild);
        printhftree(t, t->data[index].rchild);
    }
}

int main() {
    int weight[7] = { 5,1,3,6,11,2,4};
    hftree* t = inithf(weight, 7);
    creathftree(t);
    printhftree(t, t->length - 1);
    return 0;
}

标签:hftree,1020,weight,min,int,length,打卡,data
From: https://www.cnblogs.com/wlxdaydayup/p/17778207.html

相关文章

  • 10月19每日打卡
     <!DOCTYPEhtml><%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"%><html><head><title>征集页面</title><metaname="viewport"content=&qu......
  • 10月20每日打卡
         ......
  • 10月18每日打卡
     作业详情   //20213992lizhizhangpackagecom.company;importjava.util.Random;publicclassketang {  publicstaticvoidmain(String[]args){    intnumProblems=10;//生成题目的数量    intmaxNumbers=5; //每个题目......
  • 20231019打卡
    上午的课程是UML的序列图和协作图。在这门课上,我们学习了UML建模语言中的序列图和协作图,这是一种图形化的表示方法,用于描述对象间的交互和协作过程。通过老师的讲解和实践练习,我对序列图和协作图的概念和绘制规则有了更深入的理解。这种图形化的表达方式对于我们软件工程师来说非......
  • 大二打卡(10.18)
    今天做了什么:背了英语笔记,少背了一页,结果就导致老师听写的时候有不会的,还得背,不能再像这次一样,临时抱佛脚突击背诵三四十分钟今天遇到什么问题:英语还得背,建民测试还得搞明天怎么做:上完一天的课,晚上熬一宿把建民测试搞完......
  • 20231018打卡
    上午,我们进行了一次听写练习。这是一项对我们英语听力和拼写能力的考验。我在经过认真准备后,感觉状态非常好,成功地完成了听写。这让我感到很有成就感,同时也对自己的英语学习有了更大的信心。下午,为了放松自己,我和几个朋友一起去打篮球。我们组成了一个3V3的篮球队,这次打篮球让我......
  • 大二打卡(10.17)
    今天做了什么:数据结构,线索二叉树没听明白,不太能理解这是干什么的,知道是可以查前驱后继,但是,就有点东西没悟透马克思主义原理,今天没有占到好位置,坐在第一排了,但是忽然发现别样的乐趣,下次再坐那里晚上的白话文小说,西游记要讲完了,今天讲的是悟空,八戒,唐僧,沙僧的人物形象,白龙马不配了......
  • 20231017打卡
    上午的第一堂课是算法与数据结构。在这门课上,我们深入学习了线索二叉树。线索二叉树是一种对二叉树进行优化的数据结构,它通过在节点中添加标志位,使得遍历二叉树时可以更快速地定位下一个节点。通过老师的讲解和课堂实践,我对线索二叉树的概念和实现方式有了更深入的了解。我通过课......
  • MBR10200CT-ASEMI肖特基MBR10200CT参数、规格、尺寸
    编辑:llMBR10200CT-ASEMI肖特基MBR10200CT参数、规格、尺寸型号:MBR10200CT品牌:ASEMI封装:TO-220恢复时间:>50ns正向电流:10A反向耐压:200V芯片个数:2引脚数量:3类型:肖特基、插件肖特基二极管特性:低耐压、高效率浪涌电流:200A正向压降:1.05V封装尺寸:如图工作温度:-65°C~175°C......
  • 大二打卡(10.16)
    今天做了什么:上午没有课,九点洗漱好,玩了会儿,到十一点,出去吃饭,最近真是降温了,十一点了都感觉有点冷,还有女生不穿裤子,真牛下午建民老师的课,今天知道了trycatchfinal的用途,之前用idea的时候,用快捷键搞出来过trycatch的选项,不知道是干什么的,今天知道了,今天建民老师讲了讲大公司和......