我找到了一个创建制作和查找方法的教程
public void makeSet(long data) {
Node node = new Node();
node.data = data;
node.parent = node;
node.rank = 0;
map.put(data, node);
}
private Node findSet(Node node) {
Node parent = node.parent;
if (parent == node) {
return parent;
}
node.parent = findSet(node.parent);
return node.parent;
}
这里是完整代码的链接 这里是Kruskal 算法的链接
我很困惑为什么他们要返回一个其父节点本身而不是不同节点的节点,以及在等级设置为 0 时实施联合时等级的用途。我尝试查找其他 Kruskal 算法代码和解释,但是很少有关于实施的资料。