并查集Union-find的优化问题

并查集可以有两个优化方案,

1,平衡性优化:对每个结点标记一个重量值,在进行union操作时,将重量小的添加到重量大的节点上。

2,路径压缩:在进行find操作时,顺便对路径进行压缩

private int find(int x) {
    while (parent[x] != x) {
        // 进行路径压缩
        parent[x] = parent[parent[x]];
        x = parent[x];
    }
    return x;
}

 

posted @ 2021-04-20 18:53  续集h  阅读(211)  评论(0)    收藏  举报