(rotate_right, rotate_left): Simplify
authorRichard M. Stallman <rms@gnu.org>
Sun, 2 Jan 1994 19:01:15 +0000 (19:01 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 2 Jan 1994 19:01:15 +0000 (19:01 +0000)
commit4314dea4b4e7a9b2f88dac84744ae5145ee07f81
tree3fc633411e8479109483d045de73dbdb785fb8f2
parent7ac78c9ad4065b5abba9915320b2a969466d55a1
(rotate_right, rotate_left): Simplify
total_length calculation.  Minimize pointer dereferencing.
(balance_an_interval): Remove recursive rebalancing.
Rebalance precisely when imbalanced.  If a rotation is done,
rebalance only the node which may have become unbalanced.
Iterate until the current node is balanced.
(balance_possible_root_interval): New function.
(balance_intervals): Move the interation into rebalance_an_interval.
(balance_intervals_internal): New subroutine of balance_intervals.
(split_interval_right, split_interval_left): Speed up by
not checking LEAF_INTERVAL_P.
(split_interval_right, split_interval_left, find_interval,
adjust_intervals_for_insertion, graft_intervals_into_buffer):
Add dynamic rebalancing anywhere a node may become unbalanced.
(graft_intervals_into_buffer, copy_intervals): No longer
any need to do a full rebalance as the tree stays balanced.
src/intervals.c