public boolean addNonOverlapping(T target) { if (overlaps(target)) return false; add(target); return true; }
public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> n, E p) { return overlaps(n, Interval.toInterval(p,p)); } public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> node, Interval<E> target) {
public boolean overlaps(T target) { return overlaps(root, target.getInterval()); }
public boolean addNonOverlapping(T target) { if (overlaps(target)) return false; add(target); return true; }
public boolean addNonOverlapping(T target) { if (overlaps(target)) return false; add(target); return true; }
public boolean addNonOverlapping(T target) { if (overlaps(target)) return false; add(target); return true; }
public boolean addNonOverlapping(T target) { if (overlaps(target)) return false; add(target); return true; }
public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> n, E p) { return overlaps(n, Interval.toInterval(p,p)); } public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> node, Interval<E> target) {
public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> n, E p) { return overlaps(n, Interval.toInterval(p,p)); } public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> node, Interval<E> target) {
public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> n, E p) { return overlaps(n, Interval.toInterval(p,p)); } public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(TreeNode<E,T> node, Interval<E> target) {
public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(IntervalTree<E,T> n, E p) { return overlaps(n, Interval.toInterval(p,p)); } public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(IntervalTree<E,T> n, Interval<E> target) {
public boolean overlaps(T target) { return overlaps(root, target.getInterval()); }
public boolean overlaps(T target) { return overlaps(this, target.getInterval()); }
public boolean overlaps(T target) { return overlaps(root, target.getInterval()); }
public boolean overlaps(T target) { return overlaps(root, target.getInterval()); }
public static <E extends Comparable<E>, T extends HasInterval<E>> boolean overlaps(IntervalTree<E,T> n, Interval<E> target) { // Don't search nodes that don't exist if (n == null || n.isEmpty()) return false; // If target is to the right of the rightmost point of any interval // in this node and all children, there won't be any matches. if (target.second.compareTo(n.maxEnd) > 0) return false; // Check this node if (n.value.getInterval().overlaps(target)) { return true; } // If target is to the left of the start of this interval, then search left if (target.second.compareTo(n.value.getInterval().first()) <= 0) { // Search left children if (n.left != null) { return overlaps(n.left, target); } } else { if (n.right != null) { return overlaps(n.right, target); } } return false; }