Красно-чёрное дерево (удалить) — различия между версиями
| Efimenko (обсуждение | вклад) | Efimenko (обсуждение | вклад)  | ||
| Строка 5: | Строка 5: | ||
| При этом все листья дерева являются фиктивными и не содержат данных. Число чёрных узлов между корнем и узлом называется '''чёрной высотой дерева.''' | При этом все листья дерева являются фиктивными и не содержат данных. Число чёрных узлов между корнем и узлом называется '''чёрной высотой дерева.''' | ||
| ==Свойства== | ==Свойства== | ||
| − | + | '''Свойство 1: '''Число листьев в дереве с чёрной высотой <tex>h</tex> не менее, чем  <tex>2^{h-1}</tex>.<br/> | |
| − | Докажем по индукции. При h = 1 получаем дерево, в котором чёрными являются только листья, а их больше одного. | + | '''Доказательство: '''Докажем по индукции. При <tex>h=1</tex>получаем дерево, в котором чёрными являются только листья, а их больше одного. | 
| − | Иначе пусть корень - чёрный, тогда оба его поддерева имеют чёрную высоту h-1 и, следовательно, не менее, чем <tex>2^{h-2}</tex> элементов. Тогда всё дерево имеет более <tex>2^{h-1}</tex> элементов. В случае, если корень красный, то оба его поддерева имеют чёрные корни и чёрную высоту h, то есть, как только что было показано, не менее  <tex>2^{h-1}</tex> элементов. Таким образом, дерево будет иметь более <tex>2^{h}</tex> элементов. | + | Иначе пусть корень - чёрный, тогда оба его поддерева имеют чёрную высоту h-1 и, следовательно, не менее, чем <tex>2^{h-2}</tex> элементов. Тогда всё дерево имеет более <tex>2^{h-1}</tex> элементов. В случае, если корень красный, то оба его поддерева имеют чёрные корни и чёрную высоту <tex>h</tex>, то есть, как только что было показано, не менее  <tex>2^{h-1}</tex> элементов. Таким образом, дерево будет иметь более <tex>2^{h}</tex> элементов.<br/> | 
| + | '''Свойство 2: '''Число листьев в красно-чёрном дереве высоты <tex>h</tex> не менее <tex>2^{(h-1)/2}</tex>.<br/> | ||
| + | '''Доказательство: '''Возьмём самый длинный путь в дереве. Всего в нём <tex>h+1</tex> узлов. По крайней мере половина узлов чёрные, поскольку двух подряд идущих красных узлов быть не может, а лист чёрный. Поэтому чёрная высота дерева не меньше <tex>(h-1)/2</tex>, и, по первому утверждению, <tex>2^{(h-1)/2}</tex> элементов.<br/> | ||
| + | |||
| + | Отсюда также получаем, что высота дерева не более <tex>2log_2 N+1</tex>, где N - число элементов дерева, т.е. <tex>O(log N)</tex> | ||
Версия 07:31, 4 апреля 2011
Красно - чёрное дерево - самобалансирующееся двоичное дерево поиска, в котором баланс осуществляется на основе "цвета" узла дерева, который принимает только два значения: "красный" и "чёрный". При этом дерево должно удовлетворять следующим свойствам:
- Все листья дерева чёрные.
- Все сыновья красного узла чёрные.
- На каждой ветви дерева, идущей от корня к листу, число чёрных узлов одно и то же.
При этом все листья дерева являются фиктивными и не содержат данных. Число чёрных узлов между корнем и узлом называется чёрной высотой дерева.
Свойства
Свойство 1: Число листьев в дереве с чёрной высотой  не менее, чем  .
Доказательство: Докажем по индукции. При получаем дерево, в котором чёрными являются только листья, а их больше одного.
Иначе пусть корень - чёрный, тогда оба его поддерева имеют чёрную высоту h-1 и, следовательно, не менее, чем  элементов. Тогда всё дерево имеет более  элементов. В случае, если корень красный, то оба его поддерева имеют чёрные корни и чёрную высоту , то есть, как только что было показано, не менее   элементов. Таким образом, дерево будет иметь более  элементов.
Свойство 2: Число листьев в красно-чёрном дереве высоты  не менее .
Доказательство: Возьмём самый длинный путь в дереве. Всего в нём  узлов. По крайней мере половина узлов чёрные, поскольку двух подряд идущих красных узлов быть не может, а лист чёрный. Поэтому чёрная высота дерева не меньше , и, по первому утверждению,  элементов.
Отсюда также получаем, что высота дерева не более , где N - число элементов дерева, т.е.
