Skip to content

Commit 95933c2

Browse files
author
lennart
committed
make visited and subtreeSizes arrays fields for reuse, test
1 parent b87bcc0 commit 95933c2

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

src/main/java/com/thealgorithms/tree/CentroidDecomposition.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
public class CentroidDecomposition {
88
private List<Integer>[] tree;
99
private List<Integer>[] centroidTree;
10+
private int[] subtreeSizes;
11+
private boolean[] visited;
1012
private boolean[] centroidMarked;
1113
private int[] centroidParent;
1214
private int startingNode;
@@ -19,6 +21,8 @@ public CentroidDecomposition(int n, int startingNode){
1921
N = n;
2022
centroidMarked = new boolean[n];
2123
centroidParent = new int[n];
24+
subtreeSizes = new int[N];
25+
visited = new boolean[N];
2226
if (startingNode < 0 || startingNode > n-1){
2327
throw new IllegalArgumentException("Starting node must be in range 0.." + (n - 1) + " but got " + startingNode);
2428
}
@@ -51,6 +55,10 @@ private void addEdgeCTree(int u, int v){
5155
centroidParent[v] = u;
5256
}
5357

58+
public int getParent(int v){
59+
return centroidParent[v];
60+
}
61+
5462
public void findSubtreeSizes(int src, boolean[] visited, int[] subtreeSizes){
5563
// dfs traversal to find size of subtree rooted at src
5664
visited[src] = true;
@@ -65,8 +73,8 @@ public void findSubtreeSizes(int src, boolean[] visited, int[] subtreeSizes){
6573
}
6674

6775
public void findCentroid(int src, int previousCentroid){
68-
int[] subtreeSizes = new int[N];
69-
boolean[] visited = new boolean[N];
76+
// int[] subtreeSizes = new int[N];
77+
// boolean[] visited = new boolean[N];
7078
Arrays.fill(visited, false);
7179

7280
findSubtreeSizes(src, visited, subtreeSizes);

0 commit comments

Comments
 (0)