并查集的理解
作为一种数据结构,其核心的是修改与查询,并查集实现的是1.将两组的内容合并以及2.查询两个元素是否在同一组内。
并查集的结构往往是以树的形式呈现,所谓的同一组就是是否在同一棵树下,将两组的内容合并就是将一颗的根节点嫁接到另一根树的根节点下面,查询两个元素是否在同一组内就是看两个结点是否在同一棵树下。
并查集的核心函数
合并两棵树
1 | void merge(int x,int y){ |
查询结点对应的树的根节点(这里进行了路径压缩的优化,对于每次的搜索结果,将该结果记录到相关结点上)
1 | int find(int x){ |
如果还需要记录相关组内的相关信息,也可以将相关值记录在该组的根节点上,再合并过程中需要进行合并更新。