并查集

一、原文链接

http://blog.csdn.net/u014507083/article/details/71194740?locationNum=5&fps=1

二、算法理解

处理一个森林。当如果希望能够将某棵树并入另一棵树下时使用。

三、算法实现

1、查找根节点

    public static int findParent(int target,int[] parent){
        int parentIndex = target;
        //不断递归去查找根节点,当panretIndex = parent[parentIndex]时即表示找到该树的根
        while (parent[parentIndex] != parentIndex)
            parentIndex = parent[parentIndex];
        int i  = target;
        //路径压缩,让target节点及target节点的父节点指向根节点
        while (i != parentIndex){
            i = parent[i];
            parent[i] = parentIndex;
        }

        return parentIndex;
    }

2、合并树

    public static void join(int target1,int target2,int[] parent){
        int root1 = findParent(target1,parent);
        int root2 = findParent(target2,parent);
        if (root1 != root2)
            parent[root1] = root2;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容