text: Таким образом, N также имеет дядю U, хотя он может быть листовым узлом в случаях 4 и 5. void insert_case3(struct node *n) { struct node *u = uncle(n), *g; if ((u != NULL) && (u->color == RED)) { // && (n->parent->color == RED) Второе условие проверяется в insert_case2, то есть родитель уже является красным. n->parent->color = BLACK; u->color = BLACK; g = grandparent(n); g->color = RED; insert_case1(g); } else { insert_case4(n); } } Примечание: В оставшихся случаях предполагается, что родитель P является левым потомком своего предка.