并查集的路径压缩
来源:互联网 发布:linux命令 cp r 编辑:程序博客网 时间:2024/04/30 19:30
这是朴素查找的代码,适合数据量不大的情况:
int findx(int x){ int r=x; while(parent[r] !=r) r=parent[r]; return r;}
下面是采用路径压缩的方法查找元素:
int find(int x) //查找x元素所在的集合,回溯时压缩路径{ if (x != parent[x]) { parent[x] = find(parent[x]); //回溯时的压缩路径 } //从x结点搜索到祖先结点所经过的结点都指向该祖先结点 return parent[x];}上面是一采用递归的方式压缩路径, 但是,递归压缩路径可能会造成溢出栈,我曾经因为这个RE了n次,下面我们说一下非递归方式进行的路径压缩:
int find(int x){ int k, j, r; r = x; while(r != parent[r]) //查找跟节点 r = parent[r]; //找到跟节点,用r记录下 k = x; while(k != r) //非递归路径压缩操作 { j = parent[k]; //用j暂存parent[k]的父节点 parent[k] = r; //parent[x]指向跟节点 k = j; //k移到父节点 } return r; //返回根节点的值 }
0 0
- 并查集及其路径的压缩
- 转载 并查集的路径压缩。
- 并查集的路径压缩算法
- 并查集的路径压缩
- 并查集及并查集的路径压缩
- 并查集 & 路径压缩
- 【并查集+压缩路径】
- 并查集路径压缩
- 并查集路径压缩
- 并查集路径压缩
- 并查集路径压缩
- 并查集压缩路径
- 并查集 压缩路径
- 并查集路径压缩
- 并查集 ---压缩路径
- 并查集 路径压缩
- 并查集压缩路径
- 并查集压缩路径
- Redis 缓存 + Spring 的集成示例
- jquery-easyui简单使用
- 安卓开发学习笔记(一)
- java nio多线程引起的full gc问题
- leetcode happy number
- 并查集的路径压缩
- 匿名类,try-catch语句
- iOS--错误集锦--申请公司开发者账号遇到的相关问题
- ubuntu和windows间互传文件
- margin-top越界以及所有子元素浮动后父元素高度为0且影响后续元素的问题。
- 云计算的三种服务模式:IaaS,PaaS和SaaS
- 牛客堂刷题(常见面试题精讲)之最长回文序列
- WebKit之HTMLTreeBuilder类的解析框架
- 蓝懿 ios技术交流和心得分享 11.30