288
правок
Изменения
→Вставка
==Вставка==
Вставка в LLRB базируется на <tex>4<\tex> протых операциях:
*Вставка нового узла в низ деревfк листу дерева: if (h == null) return new Node(key, value, RED);*Расщепление узла с <tex>4<\tex>-я потомками: if (isRed(h.left) && isRed(h.right)) colorFlip(h);
*Принудительное вращение влево: if (isRed(h.right)) h = rotateLeft(h);*Балансировка узла с <tex>4<\tex>-я потомками: if (isRed(h.left) && isRed(h.left.left)) h = rotateRight(h); '''void''' insert( '''key''' : Key, '''value''' : Value ):
root = insert(root, key, value)
root.color = BLACK
'''return''' '''new''' Node(key, value)
'''else'''
h.right = insert(h.right, key, value)
'''if''' isRed(h.right) '''&&''' '''!'''isRed(h.left)
'''if''' isRed(h.left) '''&&''' isRed(h.left.left)