| 145 | } |
| 146 | |
| 147 | static void rotateRight(Tree *t, Node *n) |
| 148 | { |
| 149 | Node *tmp = RB_LEFT(n); |
| 150 | if ((RB_LEFT(n) = RB_RIGHT(tmp)) != nullptr) |
| 151 | RB_PARENT(RB_RIGHT(tmp)) = n; |
| 152 | fix(n); |
| 153 | if ((RB_PARENT(tmp) = RB_PARENT(n)) != nullptr) |
| 154 | { |
| 155 | if (n == RB_LEFT(RB_PARENT(n))) |
| 156 | RB_LEFT(RB_PARENT(n)) = tmp; |
| 157 | else |
| 158 | RB_RIGHT(RB_PARENT(n)) = tmp; |
| 159 | } else |
| 160 | t->root = tmp; |
| 161 | RB_RIGHT(tmp) = n; |
| 162 | RB_PARENT(n) = tmp; |
| 163 | fix(tmp); |
| 164 | if (RB_PARENT(tmp) != nullptr) |
| 165 | fix(RB_PARENT(tmp)); |
| 166 | } |
| 167 | |
| 168 | static void rebalanceInsert(Tree *t, Node *n) |
| 169 | { |
no test coverage detected