#algorithm #tree #red-black-tree
#алгоритм #дерево #красно-черное дерево
Вопрос:
Может ли узел в красно-черном дереве иметь один красный и один черный дочерний элемент?
У меня есть следующее дерево, я указал здесь только цвета. Конечные узлы игнорируются.
B
R B
B B R R
R R R
Ответ №1:
Да, узел может иметь дочерние элементы разного цвета. Посмотрите, например, на диаграмму в самом верху статьи MathWorld о R-B деревьях; вы можете убедиться, что она удовлетворяет всем требованиям, предъявляемым к R-B дереву, и один из ее узлов имеет дочерние элементы разных цветов. Как, если уж на то пошло, и приведенный вами пример.
Комментарии:
1. Спасибо за быстрый ответ. Я столкнулся с этим при тестировании моей структуры данных и хотел подтвердить, что это возможно.
Ответ №2:
Вот хорошая статья о черных для чтения деревьях в контексте изучения структуры данных в Haskell.
http://scientopia.org/blogs/goodmath/2009/11/30/advanced-haskell-data-structures-red-black-trees/
Критерии дерева R-B, которые он дает, довольно ясны. Дочерние элементы красного узла должны быть черными, но дочерние элементы черного узла не указаны. Важным моментом является то, что все пути от данного узла к листьям под ним должны иметь одинаковое количество черных узлов. Глядя на ваше дерево, каждый путь вниз от корня имеет 1 черный узел (2, если считать корень), так что все в порядке.