#algorithm #red-black-tree
#алгоритм #красно-черное дерево
Вопрос:
Пожалуйста, скажите мне, есть ли какая-либо формула для вычисления минимальных / максимальных красных узлов в красно-черном дереве?
Ответ №1:
Красно-черные деревья — это бинарные деревья поиска, которые дополнительно ограничены 4 правилами
- каждый узел либо красный, либо черный
- корень черный
- каждый красный узел должен иметь либо 0, либо 2 черных дочерних элемента
- каждый путь от корня до нуля должен иметь одинаковое количество черных узлов
Минимальное количество красных узлов просто равно 0. Нет требования, заставляющего красно-черное дерево иметь какие-либо красные узлы.
Мы можем получить максимальное количество красных узлов, если мы чередуем красные и черные узлы на каждом пути и делаем количество настоящих красных листьев как можно больше. В этом случае каждый красный узел имеет два дочерних черных узла, а корневой узел должен быть черным. Поэтому => n_black = 2 * n_red 1 Мы также знаем, что n_black n_red = n (n — наше общее количество узлов)
Вот несколько ссылок, если вам нужна дополнительная помощь: http://doctrina.org/maximum-height-of-red-black-tree.html , https://www.cs.purdue.edu/homes/ayg/CS251/slides/chap13b.pdf
Комментарии:
1. Корень черный, нет? Если бы оно было красным, у вас не могло быть нулевых красных узлов.
2. Корень черный, да