Skip to content

Commit 87f9a2a

Browse files
committed
Solved Kruskal's tree printing bug
1 parent 02f41c6 commit 87f9a2a

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

src/spanning_trees/DisjointSet.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,12 @@
88

99
public class DisjointSet {
1010

11-
private int nodeCount; /** track how many nodes do we have */
12-
private int setCount; /** track how many sets do we have */
11+
private int nodeCount = 0; /** track how many nodes do we have */
12+
private int setCount = 0; /** track how many sets do we have */
1313
private List<Node> representatives;
1414

1515
public DisjointSet(List<Vertex> vertices) {
1616
this.representatives = new ArrayList<>(vertices.size());
17-
this.nodeCount = 0;
18-
this.setCount = 0;
19-
2017
makeSets(vertices);
2118
}
2219

@@ -35,7 +32,7 @@ private void makeSets(List<Vertex> vertices) {
3532
* we increase the count of nodes and dj sets
3633
* */
3734
private void makeSet(Vertex v) {
38-
Node node = new Node(0, representatives.size(), null);
35+
Node node = new Node(nodeCount, representatives.size(), null);
3936
v.setNode(node);
4037
this.representatives.add(node);
4138
this.setCount++;

src/spanning_trees/kruskals/Kruskals.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public void run(List<Vertex> vertices, List<Edge> edges) {
1616

1717
Collections.sort(edges);
1818

19-
for(Edge edge : edges) {
2019

20+
for(Edge edge : edges) {
2121
Vertex u = edge.getStartVertex();
2222
Vertex v = edge.getTargetVertex();
2323

@@ -27,9 +27,8 @@ public void run(List<Vertex> vertices, List<Edge> edges) {
2727
}
2828
}
2929

30-
3130
for(Edge edge : MST) {
32-
System.out.println(edge.getStartVertex()+" "+edge.getTargetVertex()+" -- ");
31+
System.out.print(edge.getStartVertex()+" "+edge.getTargetVertex()+" -- ");
3332
}
3433

3534
}

src/spanning_trees/kruskals/RunKruskals.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,37 @@ public static void main(String[] args) {
99
Vertex A = new Vertex("A");
1010
Vertex B = new Vertex("B");
1111
Vertex C = new Vertex("C");
12+
Vertex D = new Vertex("D");
13+
Vertex E = new Vertex("E");
14+
Vertex F = new Vertex("F");
15+
Vertex G = new Vertex("G");
16+
Vertex H = new Vertex("H");
1217

1318
List<Vertex> vertices = new ArrayList<>();
1419
vertices.add(A);
1520
vertices.add(B);
1621
vertices.add(C);
22+
vertices.add(D);
23+
vertices.add(E);
24+
vertices.add(F);
25+
vertices.add(G);
26+
vertices.add(H);
1727

1828
List<Edge> edgeList = new ArrayList<>();
19-
edgeList.add(new Edge(3, vertices.get(0), vertices.get(1))); // A - B
20-
edgeList.add(new Edge(2, vertices.get(0), vertices.get(2))); // A - C
21-
edgeList.add(new Edge(5, vertices.get(1), vertices.get(2))); // B - C
29+
edgeList.add(new Edge(3, vertices.get(0), vertices.get(1)));
30+
edgeList.add(new Edge(2, vertices.get(0), vertices.get(2)));
31+
edgeList.add(new Edge(5, vertices.get(0), vertices.get(3)));
32+
edgeList.add(new Edge(13, vertices.get(1), vertices.get(5)));
33+
edgeList.add(new Edge(2, vertices.get(1), vertices.get(3)));
34+
edgeList.add(new Edge(5, vertices.get(2), vertices.get(4)));
35+
edgeList.add(new Edge(2, vertices.get(2), vertices.get(3)));
36+
edgeList.add(new Edge(4, vertices.get(3), vertices.get(4)));
37+
edgeList.add(new Edge(6, vertices.get(3), vertices.get(5)));
38+
edgeList.add(new Edge(3, vertices.get(3), vertices.get(6)));
39+
edgeList.add(new Edge(6, vertices.get(4), vertices.get(6)));
40+
edgeList.add(new Edge(2, vertices.get(5), vertices.get(6)));
41+
edgeList.add(new Edge(3, vertices.get(5), vertices.get(7)));
42+
edgeList.add(new Edge(6, vertices.get(6), vertices.get(7)));
2243

2344
Kruskals algorithm = new Kruskals();
2445
algorithm.run(vertices, edgeList);

0 commit comments

Comments
 (0)