并查集-快速合并——quick_union

 

public class UfTree implements UF {
    private int array[]=null;
    public UfTree(int n) {
        array=new int[n];
        for(int i=0;i<array.length;i++){
            array[i]=i;
        }
    }

    public void union(int p, int q) {

        int a=root(p);
        int b=root(q);
        array[a]=b;

    }

    /**
     * 查找根树
     * @param i
     * @return
     */
    public int  root(int i){
        while (i!=array[i]){
            i=array[i];
        }
        return  i;
    }

    public boolean connected(int p, int q) {
        return root(q)==root(p);
    }


    public static void main(String[] args) {
        UfTree uf=new UfTree(10);
        uf.union(1,2);
        System.out.println(uf.connected(1,2));
        uf.union(2,4);
        System.out.println(uf.connected(2,4));
    }
}

  

猜你喜欢

转载自www.cnblogs.com/lIllIll/p/12174905.html