当前位置: 首页 > news >正文

QuickUnion优化及Huffman树

一、QuickUnion的优化

1.使用路径压缩进行优化

由于每次合并、查找都需要得到元素的根节点,而当我们的树路径过长效率不高,因此我们可以将每个元素的父节点都指向根节点

代码逻辑:

当我们进行根节点的查找,可以将每个经过的节点放入一个栈,找到根节点后再把栈的所有节点一一出栈并把这些节点的父节点改为根节点

2.代码实现

typedef struct _node{int index;struct _node*next;
}setNode_t;static setNode_t* push(setNode_t*strack,int index) {setNode_t*node=malloc(sizeof(setNode_t));node->index=index;node->next=strack;strack=node;return strack;
}static setNode_t* pop(setNode_t*strack,int*index) {setNode_t*temp=strack;*index=strack->index;strack=strack->next;free(temp);return strack;
}static int findRootV2(QUSet_t*set,Element_t*e) {int i=findIndex(set,*e);if (i==-1) {return -1;}setNode_t*strack=NULL;while (i!=set->parentID[i]) {strack=push(strack,i);i=set->parentID[i];}int pos=0;while (strack) {strack=pop(strack,&pos);set->parentID[pos]=i;}return i;
}

 二、哈夫曼树(Huffman)

1. 哈夫曼树相关的几个名词

a.路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。 从根结点到结点 a 之间的通路就是一条路径。

b.路径长度:在一条路径中,每经过一个结点,路径长度都要加 1。 例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第i层结点的路径长度为从根结点到结点 c 的路径长度为 3。

c.节点的权:给每一个结点赋予一个新的数值,被称为这个结点的权。 例如,结点al17,结点b 的权为5。

d.节点的带权路径长度:指的是从根结点到该结点之间的路径长度与该结点的权的乘积。 例如,结点b 的带权路径长度为2*5= 10。 树的带权路径长度为树中所有叶子结点的带权路径长度之和。通常记作"WPL”。 例如图中所示的这颗树的带权路径长度为: WPL=7*1+5*2+2*3+4*3

http://www.dtcms.com/a/277297.html

相关文章:

  • JS红宝书pdf完整版
  • JAVA生成PDF(itextpdf)
  • 为什么玩游戏用UDP,看网页用TCP?
  • [2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型
  • MyBatis框架进阶指南:深入理解CRUD与参数映射
  • Redis集群方案——哨兵机制
  • 无需付费即可利用AI消除音频噪声和生成字幕
  • 《Linux篇》自动化构建-make/Makefile
  • GraphRAG Docker化部署,接入本地Ollama完整技术指南:从零基础到生产部署的系统性知识体系
  • AI抠图软件,本地运行超快速
  • 水往低处流,人也往低处走
  • 三种网络类型
  • 跨域中间件通俗理解
  • 教程:如何查看浏览器扩展程序的源码
  • Linux驱动11 --- buildroot杂项驱动开发方法
  • 网络资源模板--基于Android Studio 实现的音乐播放器App
  • 【Go语言-Day 19】深入理解Go自定义类型:Type、Struct、嵌套与构造函数实战
  • 系规备考论文:论IT服务知识管理
  • 20250711_Sudo 靶机复盘
  • vue的优缺点
  • React强大且灵活hooks库——ahooks入门实践之状态管理类hook(state)详解
  • 在NDK开发中如何正确创建JNI方法
  • Perl小骆驼学习笔记 - 9. 用正则表达式处理文本
  • 香港服务器Python自动化巡检脚本开发与邮件告警集成
  • 《雨下小暑》诗赏——小暑时节暴雨之晨的清凉视听(智普清言)
  • iOS UI视图面试相关
  • 从儿童涂鸦到想象力视频:AI如何重塑“亲子创作”市场?
  • [特殊字符]使用 Nginx 将 HTTP 重定向到 HTTPS
  • Anaconda3安装教程(Windows)
  • 低代码引擎核心技术:OneCode常用动作事件速查手册及注解驱动开发详解