public NodeStoreMedium()

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
        }
    }