作用:1.将两个集合合并
2.询问两个元素是否在一个集合中
。
此时有路径压缩的优化。
当我们的叶节点查到根节点的时候,将路径上的所有点全部指向根节点,这样就减少了遍历的时间
使时间差不多达到o(1)
路径压缩代码+寻找父节节点,这里把父节点定义为p[x],表示为x的父节点
因为根节点没有父节点所以根节点的父节点是他自己。
所以当p[x]!=x的时候使每个节点的父节点等于根节点。
int find(int x){
if(p[x]!=x)p[x]=find(p[x]);
return p[x];
}
2.合并集合
就使将一个根节点的父节点换成另一个根节点
p[find(a)]=find(b)
3.判断两个节点是否在一个集合内
就是判断他们的父节点是否相同
find(a)==find(b)相同
else 不同
标签:路径,int,是否,查集,find,集合,节点 来源: https://blog.csdn.net/m0_62000951/article/details/122340912
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。