kruskal(克鲁斯卡尔)的思路很简单,自行google。
Java的kruskal实现起来有点麻烦,主要是边排序那里,我自己写了个MyEdge类继承comparable, 重写compareTo方法,然后再用Collections.sort()。。。用习惯了python,觉得java好啰嗦,实现一个想法要好久好绕。
package Graph;
import java.util.ArrayList;
import java.util.Collections;
public class Kruskal {
public static void main(String[] args) {
int[][] edges = {
{
0, 1, 6},
{
0, 2, 1},
{
0, 3, 5},
{
2, 1, 5},
{
2, 3, 5},
{
2, 4, 5},
{
2, 5, 4},
{
1, 4, 3},
{
4, 5, 6},
{
5, 3, 2}
};
int n = 6;
int[][] mstEdges = kruskal(n, edges);