我们可以为Quick Union算法的根部分设置if循环吗?

时间:2017-07-22 03:42:55

标签: algorithm

在下面的Quick Union算法实现中,在root方法中我们可以有一个if循环(例如if(i!= id [i])而不是while循环吗?我认为它的工作原理也一样。那么为什么他们使用了while循环吗?

public class QuickUnionUF {
    private int []id;

    public QuickUnionUF(int N){
        id = new int[N];
        for(int i=0; i<N; i++) id[i] = i;
    }

    private int root(int i){
        while(i != id[i]) i = id[i];
        return i;
    }

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

    public void union(int p, int q){
        int i = root(p);
        int j = root(q);
        id[i] = j;
    }
}

1 个答案:

答案 0 :(得分:1)

组件可以由高于一个级别的树表示。要获取组件ID,您需要一直向下到根。例如,尝试

$('#customer').html()