Представление множеств. Деревья. Сбалансированные деревья.
14.1. Представление множеств с помощью деревьев
Полное двоичное дерево. T-деревья
Нарисуем точку. Из нее проведем две стрелки (влево вверх ивправо вверх) в две другие точки. Из каждой из этих точек проведем по две стрелки итак далее. Полученную картинку (в -ом слое будет точек) называют полным двоичным деревом. Нижнюю точку называют корнем. У каждой вершины есть два сына (две вершины, в которые идут стрелки) - левый и правый. У всякой вершины, кроме корня, есть единственный отец.
Пусть выбрано некоторое конечное множество вершин полного двоичного дерева, содержащее вместе с каждой вершиной и всех ее предков. Пусть на каждой вершине этого множества написано значение фиксированного типа (то есть задано отображение множества вершин в множество значений типа ). То, что получится, будем называть -деревом. Множество всех -деревьев обозначим .
Рекурсивное определение. Всякое непустое -дерево разбивается на три части: корень (несущий пометку из ), левое и правое поддеревья (которые могут быть пустыми). Это разбиение устанавливает взаимно однозначное соответствие между множеством непустых -деревьев и произведением . Обозначив через empty пустое дерево, можно написать
Поддеревья. Высота
Фиксируем некоторое -дерево. Для каждой его вершины определено ее левое поддерево (левый сын вершины и все его потомки), правое поддерево (правый сын вершины и все его потомки) и поддерево с корнем в x (вершина и все ее потомки).
Левое и правое поддеревья вершины могут быть пустыми, а поддерево с корнем в всегда непусто (содержит по крайней мере ). Высотой поддерева будем считать максимальную длину цепи его вершин, в которой - сын для всех . ( Высота дерева из одного корня равна единице, высота пустого дерева - нулю.)
Упорядоченные T-деревья
Пусть на множестве значений типа фиксирован порядок. Назовем -дерево упорядоченное дерево, если выполнено такое свойство: для любой вершины все пометки в ее левом поддереве меньше пометки в а все пометки в ее правом поддереве больше пометки в .
14.1.1. Доказать, что в упорядоченном дереве все пометки различны.
Указание. Индукция по высоте дерева.
Представление множеств с помощью деревьев
Каждое дерево будем считать представлением множества всех пометок на его вершинах. При этом одно и то же множество может иметь различные представления.
Благодаря упорядоченности каждый элемент может легко "найти свое место" в дереве: придя в какую-то вершину и сравнив себя с тем, кто там находится, элемент решает, идти ему налево или направо.
Начав с корня и двигаясь по этому правилу, он либо обнаружит, что такой элемент уже есть, либо найдет место, в котором он должен быть.Всюду далее мы предполагаем, что на значениях типа задан порядок, и рассматриваем только упорядоченные деревья.