Вставка красного черного дерева: зачем делать узлы красными при вставке?

в свойствах красного черного дерева не содержится никакого правила для цвета узла вставки, как всегда, мы вставляем узлы красного цвета.

Если мы вставляем узел черного цвета, нарушает ли он какие-либо свойства( любое правило из 4)?

2 ответов


Ага! Предположим, у вас есть один узел в дереве:

    5 (black)

теперь вставьте новый черный узел в дерево:

    5 (black)
     \
      9 (black)

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

надеюсь, что это помогает!


вы, кажется, задаете два вопроса

1) Зачем делать узлы красными при вставке (в заголовке)?

2) вставка как черный нарушает какие-либо свойства?

вы также, похоже, находитесь под ошибочным впечатлением, что ответ " Да " для 2) является автоматическим оправданием для 1).

Это не так! Вставка узла как red и может нарушать одно из свойств дерева RB. Например, если вы сделаете Красный Узел дочерним для другого красного узла, вы только что нарушили свойство, что красные узлы могут иметь только черных детей.

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

также можно исправить дерево, вставив черный узел и не перекрашивая красный. Возможно, никто и не видел. подумал он еще.