MCPcopy Create free account
hub / github.com/MenoData/Time4J / insert

Method insert

base/src/main/java/net/time4j/range/IntervalTree.java:516–550  ·  view source on GitHub ↗
(
        Node<T, I> node,
        I interval,
        TimeLine<T> timeLine
    )

Source from the content-addressed store, hash-verified

514 }
515
516 private static <T, I extends ChronoInterval<T>> Node<T, I> insert(
517 Node<T, I> node,
518 I interval,
519 TimeLine<T> timeLine
520 ) {
521
522 if (node == null) {
523 return new Node<>(interval);
524 }
525
526 if (compareAtStart(node.interval.getStart(), interval.getStart(), timeLine) > 0) {
527 node.left = insert(node.left, interval, timeLine);
528 } else {
529 node.right = insert(node.right, interval, timeLine);
530 }
531
532 node.height = Math.max(getHeight(node.left), getHeight(node.right)) + 1;
533 node.max = findMax(node, timeLine);
534 int balance = getBalance(node);
535
536 if (balance < -1) {
537 if (getBalance(node.right) > 0) {
538 node.right = rightRotate(node.right, timeLine);
539 }
540 return leftRotate(node, timeLine);
541 } else if (balance > 1) {
542 if (getBalance(node.left) < 0) {
543 node.left = leftRotate(node.left, timeLine);
544 }
545 return rightRotate(node, timeLine);
546 }
547
548 return node;
549
550 }
551
552 private static <T, I extends ChronoInterval<T>> Node<T, I> leftRotate(
553 Node<T, I> n,

Callers 1

IntervalTreeMethod · 0.95

Calls 8

compareAtStartMethod · 0.95
getHeightMethod · 0.95
findMaxMethod · 0.95
getBalanceMethod · 0.95
rightRotateMethod · 0.95
leftRotateMethod · 0.95
getStartMethod · 0.65
maxMethod · 0.45

Tested by

no test coverage detected