并查集知识点学习

文章目录

  • [1. 并查集的两个操作](#1. 并查集的两个操作)
  • [2. 代码操作](#2. 代码操作)

1. 并查集的两个操作

对于并查集的两个操作,也就是 FindUnion操作,它们两个作用分别是。

  1. Find:查询元素属于哪个集合(找根节点);
  2. Union:合并两个元素所属的集合

针对于Find操作,只需要找当前元素cur_index的父节点pcur_index值是否等于cur_index,如果等于,说明这是一个根节点,也就是说找到想要的结果值了;如果不等的话,那么就一直找,直到找到为止;

针对Union操作,也就是合并操作,只需要修改两个集合任意根节点的指向即可;

2. 代码操作

初始状态下,由于各个节点之间不存在任何关系,因此,每个节点都可以把它当作为根节点看待,Python代码初始化如下:

python 复制代码
p = list(range(n)) # n为节点的个数

对于Find和Union操作,其参考代码如下:

python 复制代码
def Find(x):
	if p[x] == x:
		return x
	return Find(p[x])

# 改进
def Find(x):
	if p[x] == x:
		return x
	return p[x] = Find(p[x])

def Union(x,y):
	rootx,rooty = Find(x),Find(y)
	if rootx != rooty:
		p[rootx] = rooty 

这里具体可以参考这个视频。。。并查集

相关推荐
Terra.K1 小时前
Java异常学习[特殊字符]
java·开发语言·学习
zjnlswd8 小时前
C#学习笔记4
笔记·学习·c#
minglie18 小时前
在linux环境烧录esp8266
学习
xqqxqxxq9 小时前
AI Agent学习:MCP与工具生态:工具选择的挑战(李博杰《深入理解 AI Agent》4.3观后总结)
人工智能·学习
青山是哪个青山9 小时前
LangChain 学习笔记(九):上下文与记忆
笔记·学习·langchain
KaKa_大王10 小时前
关于秒杀项目的一些理解
java·学习
Z59981784110 小时前
c#软件开发学习笔记--Modbus-TCP/UDP网口通讯
笔记·学习·c#
zyf10441611 小时前
暑期实践日志 Day29:根据修改要求,进行视频字幕添加
学习·计算机网络·剪辑·暑期实践·课题任务
田径他爸来了12 小时前
嵌入式学习第27天——线程(创建,执行,退出)
java·开发语言·学习
xqqxqxxq12 小时前
AI Agent学习:打通真实世界:Agent 工具分类与设计原则(李博杰《深入理解 AI Agent》4.1 4.2观后总结)
学习·ai