288
правок
Изменения
Нет описания правки
'''Node''' insert( h : '''Node''', key : '''Key''', value : '''Value'''):
'''if''' h == ''null''
'''return''' '''new''' Node(key, value)
'''if''' isRed(h.left) '''&&''' isRed(h.right)
colorFlip(h)
'''int''' cmp = key.compareTo(h.key)
'''if''' cmp == 0
'''else'''
h.right = insert(h.right, key, value)
'''if''' isRed(h.right) '''&&''' '''!'''isRed(h.left)
h = rotateLeft(h)
'''if''' isRed(h.left) '''&&''' isRed(h.left.left)
h = rotateRight(h)
*Использование Переворота цветов и вращений сохраняет баланс черной связи.
*После удаления необходимо исправить правые красные связи и устранить узлы с <tex>4-</tex>я потомками
'''if''' (isRed(h.left) '''&&''' isRed(h.left.left))
h = rotateRight(h); <span style="color:#008000">//Балансировка узла с <tex>4</tex>-я потомками</span>
'''if''' (isRed(h.left) '''&&''' isRed(h.right))
colorFlip(h);
'''return''' h;
}