Skip to content

Commit f9bae16

Browse files
committed
Add algorithm to find center node(s)
1 parent f7fecc6 commit f9bae16

File tree

1 file changed

+11
-7
lines changed
  • src/main/java/com/williamfiset/algorithms/graphtheory/treealgorithms

1 file changed

+11
-7
lines changed

src/main/java/com/williamfiset/algorithms/graphtheory/treealgorithms/TreeCenter.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ public static List<Integer> findTreeCenters(List<List<Integer>> tree) {
2323
for (int i = 0; i < n; i++) {
2424
List<Integer> edges = tree.get(i);
2525
degrees[i] = edges.size();
26-
if (degrees[i] <= 1) leaves.add(i);
26+
if (degrees[i] <= 1) {
27+
leaves.add(i);
28+
degrees[i] = 0;
29+
}
2730
}
2831

2932
int processedLeafs = leaves.size();
@@ -39,6 +42,7 @@ public static List<Integer> findTreeCenters(List<List<Integer>> tree) {
3942
newLeaves.add(neighbor);
4043
}
4144
}
45+
degrees[node] = 0;
4246
}
4347
processedLeafs += newLeaves.size();
4448
leaves = newLeaves;
@@ -74,29 +78,29 @@ public static void main(String[] args) {
7478
addUndirectedEdge(graph, 6, 8);
7579

7680
// Centers are 2
77-
System.out.println(findTreeCenters(graph));
81+
System.out.println(findTreeCenters(graph) + "\n");
7882

7983
// Centers are 0
8084
List<List<Integer>> graph2 = createEmptyTree(1);
81-
System.out.println(findTreeCenters(graph2));
85+
System.out.println(findTreeCenters(graph2) + "\n");
8286

8387
// Centers are 0,1
8488
List<List<Integer>> graph3 = createEmptyTree(2);
8589
addUndirectedEdge(graph3, 0, 1);
86-
System.out.println(findTreeCenters(graph3));
90+
System.out.println(findTreeCenters(graph3) + "\n");
8791

8892
// Centers are 1
8993
List<List<Integer>> graph4 = createEmptyTree(3);
9094
addUndirectedEdge(graph4, 0, 1);
9195
addUndirectedEdge(graph4, 1, 2);
92-
System.out.println(findTreeCenters(graph4));
96+
System.out.println(findTreeCenters(graph4) + "\n");
9397

9498
// Centers are 1,2
9599
List<List<Integer>> graph5 = createEmptyTree(4);
96100
addUndirectedEdge(graph5, 0, 1);
97101
addUndirectedEdge(graph5, 1, 2);
98102
addUndirectedEdge(graph5, 2, 3);
99-
System.out.println(findTreeCenters(graph5));
103+
System.out.println(findTreeCenters(graph5) + "\n");
100104

101105
// Centers are 2,3
102106
List<List<Integer>> graph6 = createEmptyTree(7);
@@ -106,6 +110,6 @@ public static void main(String[] args) {
106110
addUndirectedEdge(graph6, 3, 4);
107111
addUndirectedEdge(graph6, 4, 5);
108112
addUndirectedEdge(graph6, 4, 6);
109-
System.out.println(findTreeCenters(graph6));
113+
System.out.println(findTreeCenters(graph6) + "\n");
110114
}
111115
}

0 commit comments

Comments
 (0)