Converted to Maven project

This changes RedBlackNode into a Maven project, by adding pom.xml and changing the directory structure. This should make it easier for other projects to include RedBlackNode as a dependency.
This commit is contained in:
William Jacobs
2019-03-06 15:20:01 -05:00
parent 148e9247d3
commit 8cf1eb9230
27 changed files with 75 additions and 12 deletions

View File

@@ -0,0 +1,68 @@
package com.github.btrekkie.interval_tree;
import com.github.btrekkie.red_black_node.RedBlackNode;
/**
* A node in an IntervalTree. See the comments for the implementation of IntervalTree. Its compareTo method orders
* nodes as suggested in the comments for the implementation of IntervalTree.
*/
class IntervalTreeNode extends RedBlackNode<IntervalTreeNode> {
/** The dummy leaf node. */
public static final IntervalTreeNode LEAF = new IntervalTreeNode();
/** The interval stored in this node. */
public IntervalTreeInterval interval;
/** The maximum ending value of an interval in the subtree rooted at this node. */
public double maxEnd;
public IntervalTreeNode(IntervalTreeInterval interval) {
this.interval = interval;
maxEnd = interval.end;
}
/** Constructs a new dummy leaf node. */
private IntervalTreeNode() {
interval = null;
maxEnd = Double.NEGATIVE_INFINITY;
}
@Override
public boolean augment() {
double newMaxEnd = Math.max(interval.end, Math.max(left.maxEnd, right.maxEnd));
if (newMaxEnd == maxEnd) {
return false;
} else {
maxEnd = newMaxEnd;
return true;
}
}
@Override
public void assertNodeIsValid() {
double expectedMaxEnd;
if (isLeaf()) {
expectedMaxEnd = Double.NEGATIVE_INFINITY;
} else {
expectedMaxEnd = Math.max(interval.end, Math.max(left.maxEnd, right.maxEnd));
}
if (maxEnd != expectedMaxEnd) {
throw new RuntimeException("The node's maxEnd does not match that of the children");
}
}
@Override
public int compareTo(IntervalTreeNode other) {
if (interval.start != interval.end) {
return Double.compare(interval.start, other.interval.start);
} else {
return Double.compare(interval.end, other.interval.end);
}
}
@Override
public void assertSubtreeIsValid() {
super.assertSubtreeIsValid();
assertOrderIsValid(null);
}
}