Так что я только что выучил красные чёрные деревья в Кормене и вау! Обычно мне нравится понимать все алгоритмы и структуры данных до такой степени, что я могу восстановить их с нуля, не прибегая к мошенничеству, глядя на псевдокод. Мне действительно нравятся алгоритмы, поэтому мне нравится изучать, как они работают, и я обычно иду построчно и пробую некоторые случаи, просматривая код и проверяя, должно ли происходить то, что происходит, как я понял.
Просто понимание того, что происходит, заняло у меня много времени для деревьев RB. Даже с объяснениями книги мне все еще было трудно понять код. Не говоря уже о том, что я не мог понять, как / почему вращение работает. Я не нахожу это интуитивным вообще. Я имею в виду три (шесть фактически) разных случаев для вставки, а затем 4 случая для удаления? Можно ли это понять? Я не могу перестроить этот код без обмана. До бинарного дерева я мог реализовывать вещи из своей головы, с некоторыми изменениями, это всегда работало бы, но деревья RB я даже не собирался пробовать. Я имею в виду, что даже учитель иногда смущался, поэтому я полагаю, что это действительно не так просто, но в то же время, разве мы не должны понимать все, что происходит, или хотя бы почему? Книга не Это действительно объясняет, как кто-то придумал идею вращения. Как кто-то заметил, что с помощью 2 поворотов вы можете решить любую проблему вставки? Это восхитительно!
Мой вопрос: действительно ли я должен на 100% понимать деревья RB? Я чувствую себя плохо, не понимая этого. Заранее спасибо, ребята! (PS: нет тэга для RB-дерева, на самом деле даже для дерева, только для бинарного дерева, поэтому я ставлю только алгоритмы)