restore red-black tree invariant
(h: Option<NonNull<Node<K, V>>>)
| 341 | |
| 342 | /// restore red-black tree invariant |
| 343 | fn balance<K, V>(h: Option<NonNull<Node<K, V>>>) -> Option<NonNull<Node<K, V>>> { |
| 344 | let mut h = NodeQuery::new(h); |
| 345 | if h.right().is_red() && !h.left().is_red() { |
| 346 | h.node = rotate_left(h.node); |
| 347 | } |
| 348 | if h.left().is_red() && h.left().left().is_red() { |
| 349 | h.node = rotate_right(h.node); |
| 350 | } |
| 351 | if h.left().is_red() && h.right().is_red() { |
| 352 | flip_colors(h.node); |
| 353 | } |
| 354 | h.node |
| 355 | } |
| 356 | |
| 357 | /// does every path from the root to a leaf have the given number of black links? |
| 358 | fn is_balance<K, V>(root: Option<NonNull<Node<K, V>>>) -> bool { |
no test coverage detected