并查集Java语言描述[按秩合并和路径压缩]

并查集是一种用于合并树的数据结构,常用于判断图中环的存在和最小生成树算法。本文介绍并查集的原理、优化方法——按秩合并和路径压缩,并提供Java代码实现。通过按秩合并减少树深度,路径压缩则提高查找根节点的效率,达到O(1)的时间复杂度。此外,还分享了蓝桥杯相关的例题供练习。

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

并查集

并查集是一种十分好用的树形数据结构,用来合并2棵树

并查集原理:就是每次给定2个节点,然后通过找他的父亲节点,直到找到根节点,如果2个节点的根节点不是同一个,则说明这2个节点不在同一个树上,则合并2棵树
并查集应用一般可以判断图中存不存在环
最小生成树Kurskal算法(克鲁斯卡尔算法)也是运用并查集来实现的.(有兴趣的可以下去自己学学看),这里不做详细说明
对最小生成树感兴趣的可以查看我的另外一篇博客-----最小生成树prim算法和kruskal算法

并查集实现可以分为寻找根和合并根2部分来实现
具体实现

//这里是判断一个图中存不存在环
/**
 * @author Bhg
 * @date 2020/3/22
 */
public class Demo1 {
   
   
    static int parent[];
    //初始化
    private static void initialize(int[] parent) {
   
   
        for (int i = 0; i < parent.length; i++) {
   
   
            parent[i]=-1;
        }
    }

    public static void main(String[]args){
   
   
        parent=new int[6];
        initialize(parent);
        int [][]set={
   
   {
   
   0,1},{
   
   1,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值