in Java/core/src/main/java/com/amazon/randomcutforest/tree/NodeStoreMedium.java [49:92]
public NodeStoreMedium(AbstractNodeStore.Builder builder) {
super(builder);
mass = new char[capacity];
Arrays.fill(mass, (char) 0);
if (builder.storeParent) {
parentIndex = new char[capacity];
Arrays.fill(parentIndex, (char) capacity);
} else {
parentIndex = null;
}
if (builder.leftIndex == null) {
leftIndex = new int[capacity];
rightIndex = new int[capacity];
cutDimension = new char[capacity];
Arrays.fill(leftIndex, capacity);
Arrays.fill(rightIndex, capacity);
} else {
leftIndex = Arrays.copyOf(builder.leftIndex, builder.leftIndex.length);
rightIndex = Arrays.copyOf(builder.rightIndex, builder.rightIndex.length);
cutDimension = toCharArray(builder.cutDimension);
BitSet bits = new BitSet(capacity);
if (builder.root != Null) {
bits.set(builder.root);
}
for (int i = 0; i < leftIndex.length; i++) {
if (isInternal(leftIndex[i])) {
bits.set(leftIndex[i]);
if (parentIndex != null) {
parentIndex[leftIndex[i]] = (char) i;
}
}
}
for (int i = 0; i < rightIndex.length; i++) {
if (isInternal(rightIndex[i])) {
bits.set(rightIndex[i]);
if (parentIndex != null) {
parentIndex[rightIndex[i]] = (char) i;
}
}
}
freeNodeManager = new IndexIntervalManager(capacity, capacity, bits);
// need to set up parents using the root
}
}