h x / \ / \ A R(x) => R(h) C / \ / \ B C A B 旋转操作会改变红链接的指向,所以旋转之后 h 变为 R(h) 旋转操作可以保持rb tree的两个重要性质:有序性(中序)和完美平衡性 */ make a right-leaning link lean to the left
(h: Option<NonNull<Node<K, V>>>)
| 303 | */ |
| 304 | /// make a right-leaning link lean to the left |
| 305 | fn rotate_left<K, V>(h: Option<NonNull<Node<K, V>>>) -> Option<NonNull<Node<K, V>>> { |
| 306 | let mut h = NodeQuery::new(h); |
| 307 | let mut x = h.right(); |
| 308 | h.set_right(x.left().node); |
| 309 | x.set_left(h.node); |
| 310 | x.set_color(h.color().unwrap()); |
| 311 | h.set_color(Color::Red); |
| 312 | x.node |
| 313 | } |
| 314 | |
| 315 | /* |
| 316 | h x |