красно-черное дерево - строительство

Недавно я просматривал деревья поиска и столкнулся с красно-черными деревьями, меня смущает то, что в дереве rb корневой узел должен быть черным, это нормально, как теперь я могу решить, будет ли входящий узел иметь красный или черный цвет? .

Я просмотрел статью в вики, но не нашел решения для этого. Я могу ошибаться, но я был бы рад, если бы кто-нибудь мог провести меня через точный материал.

[Изменить] То есть, например, если мои ключи {7, 2, 4, 1, 9, 10, 8}

Здесь 7 — это корень, и он принимает черный цвет, но какой цвет принимает 2? Как мы это решаем? И как мы решим, какой цвет примут другие узлы?

                                  7 - (Black)
                   2                              9
           1                   4        8                    10
        NIL   NIL          NIL  NIL   NIL  NIL            NIL  NIL

У нас есть случайный бросок, который решает, будет ли цвет узла красным или черным. Или это какой-то другой процесс.

Спасибо.


person Chaitanya    schedule 04.04.2010    source источник
comment
Дело в том, что вы никогда не рисуете все дерево за один раз. Вы всегда вставляете свои узлы один за другим и исправляете остальную часть своего дерева.   -  person Gab Royer    schedule 04.04.2010
comment
Входящий новый узел всегда сначала окрашивается в КРАСНЫЙ цвет, затем вы выполняете проверку свойств дерева.   -  person bashmohandes    schedule 19.10.2010


Ответы (2)


Посмотрите лекцию о красно-черных деревьях в открытом курсе MIT.

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-046JFall-2005/VideoLectures/

Я нашел их очень полезными.

Теперь, если я правильно помню, вы всегда вставляете новый узел как черный узел, а затем переходите к необходимым исправлениям (перекрашиванию и/или поворотам).

person Gab Royer    schedule 04.04.2010
comment
Да, я видел видео, но я не нашел в нем ответа. Спасибо за это, так как это заставило меня ясно понять другие концепции. - person Chaitanya; 04.04.2010
comment
На самом деле вы вставляете каждый новый узел как КРАСНЫЙ (не черный) узел, а затем продолжаете вносить исправления. Причина в том, чтобы сохранить следующее свойство истинным: для каждого узла все пути от узла к дочерним листьям содержат одинаковое количество черных узлов. Если вы вставляете новый узел как черный, вы увеличиваете количество черных узлов на одном путей. - person Igor Popov; 23.09.2011

Входящий узел должен быть окрашен в КРАСНЫЙ, потому что, если вы покрасите входящий узел в черный цвет, высота всего пути от листа к корню для вновь вставленного узла увеличится на единицу, что нарушит свойство дерева RB, которое должен иметь каждый путь от корня к листу. содержат одинаковое количество черных узлов. Обратитесь к этому, если вы хотите больше узнать о вставке дерева RB http://www.youtube.com/watch?v=6QOKk_pcv3U

person akashchandrakar    schedule 08.10.2014