并查集

来源:互联网 发布:java byte类 编辑:程序博客网 时间:2024/06/05 05:06

并查集是一种树型数据结构。由一个整型数组和两个函数构成。数组pre[i]表示节点i的父节点,两个基本操作有查找findRoot和合并union。

递归实现查找:

int findRoot(int r){    if(r == pre[r])        return r;    return findRoot(pre[r]);}
查找并压缩路径:

int findAndCompress(int r){    if(r == pre[r])        return r;    int s = r;    while(s != pre[s])        s = pre[s];    while(r != s){        int tmp = pre[r];        pre[r] = s;        r = tmp;    }    return s;}
合并:

void union(int x, int y){    int rootx = findRoot(x);    int rooty = findRoot(y);    if(rootx != rooty)        pre[rooty] = rootx;}




0 0
原创粉丝点击