(
Node<T, I> node,
I interval,
TimeLine<T> timeLine
)
| 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, |
no test coverage detected