Определим по индукции понятие упорядоченного дерева:
1) пустое множество и список (a), где a – некоторый элемент, является упорядоченным деревом;
2) если T1, T2,…, Tn – непустые упорядоченные деревья, a – некоторый новый элемент, то список T=(a, T1,…,Tn) образует упорядоченное дерево. При этом элемент a называется корнем упорядоченного дерева T;
3) любое упорядоченное дерево строится в соответствии с пп. 1 и 2.
Если T1,…,Tn – упорядоченные деревья, то список (T1,…,Tn) называется упорядоченным лесом.
Для заданного упорядоченного дерева T определим множество S(T) его упорядоченных поддеревьев:
- если , то
- если T=(a), то S(T)={(a)}
- если T=(a,T1,…,Tn), то
Непустое упорядоченное дерево Т может интерпретироваться в виде системы пронумерованных непустых множеств, каждое из которых взаимно однозначно соответствует упорядоченному поддереву из S(T) так, что:
1) если T’ – поддерево упорядоченного дерева T’’; , то для соответствующих множеств X’ и X’’ выполняется включение
2) если T’ не является поддеревом упорядоченного дерева T’’; , соответствующие множества не пересекаются.
|
|
Упорядоченное дерево может также интерпретироваться в виде уступчатого списка, который обычно используется в оглавлениях. Любая иерархическая классификационная схема интерпретируется некоторым упорядоченным деревом. Частным случаем упорядоченного дерева является бинарное дерево. Определение понятия бинарного дерева повторяет определение для упорядоченного дерева с ограничением в п.2. Любой упорядоченный лес взаимно однозначно соответствует некоторому бинарному дереву.
Опишем алгоритм преобразования упорядоченного леса T=(T1,…,Tn) в бинарное дерево B(T):
1) Если n=0,
2) Если n>0, то корнем бинарного дерева B(T) является корень упорядоченного дерева T1, левое поддерево дерева B(T) – бинарное дерево B(T11,…,T1m), где T1=((a1),T11,…,T1m), правое поддерево дерева B(T) – бинарное дерево B(T2,…,T n).