h x / \ / \ R(x) C => A R(h) / \ / \ A B B C */ make a left-leaning link lean to the right
(h: Option<NonNull<Node<K, V>>>)
| 322 | */ |
| 323 | /// make a left-leaning link lean to the right |
| 324 | fn rotate_right<K, V>(h: Option<NonNull<Node<K, V>>>) -> Option<NonNull<Node<K, V>>> { |
| 325 | let mut h = NodeQuery::new(h); |
| 326 | let mut x = h.left(); |
| 327 | h.set_left(x.right().node); |
| 328 | x.set_right(h.node); |
| 329 | x.set_color(h.color().unwrap()); |
| 330 | h.set_color(Color::Red); |
| 331 | x.node |
| 332 | } |
| 333 | |
| 334 | /// flip the colors of a node and its two children |
| 335 | fn flip_colors<K, V>(h: Option<NonNull<Node<K, V>>>) { |