Бинарные деревья

 

D = (либо пусто, либо Dо);

Dо = (i:инф; лев:D; прав:D).

Операции:

· Создать (Создается пустое дерево)

· Пусто? (Функция логического типа, истина, если дерево пусто, ложь в противном случае)

· Корень? (Функция логического типа, истина, если дерево состоит лишь из корня. Такое дерево можно назвать «пнем»)

· Корень (Процедура выделяет из дерева корень, левое и правое поддеревья как самостоятельные деревья)

· Левое поддерево (Процедура выделяет из дерева левое поддерево, корень, и правое поддерево как самостоятельные деревья)

· Правое поддерево (Процедура выделяет из дерева правое поддерево, корень и левое поддерево как самостоятельные деревья)

· Конструирование (Из «пня» и двух деревьев конструируется дерево. Это операция, обратная к предыдущим трем)

· Обходы (6 штук! Их названия – ЛКП, ЛПК, ПКЛ, ПЛК, КЛП, КПЛ зависят от порядка обхода)

 

Пример.Правильное арифметическое выражение (((a+b)*c)/(c+d)).

Представим в виде бинарного дерева

Обходы:

ЛКП – (((a+b)*c)/(c+d)) – исходное выражение.

ЛПК – ab+c*cd+/ – обратная польская запись.