
- •Алгоритмы и структуры данных
- •. Определения дерева, леса, бинарного дерева. Скобочное представление
- •Определение (рекурсивное)
- •Если в определении дерева существен порядок перечисления поддеревьев Т1, Т2, ..., Тm,
- •Представление дерева:
- •Скобочное представление дерева и леса:
- •Бинарные деревья
- •Бинарные деревья
- •Функциональная спецификация структуры данных бинарного дерева
- •Естественное соответствие
- •Бинарное дерево B (F), представляющее лес F:
- •«Геометрическая» интерпретация
- •Преобразование БД лес
- •4. Обходы бинарных деревьев, деревьев и
- •void обходЛКП (Btree b)
- •Варианты терминологии
- •Обход бинарного дерева, представляющего
- •Обходы леса
- •Прямой порядок:
- •Обратный порядок:
- •Замечания
- •Замечания
- •КОНЕЦ ЛЕКЦИИ

Алгоритмы и структуры данных
Лекция 5.1
ДЕРЕВЬЯ
1.Определения дерева, леса, бинарного дерева.
Скобочное представление
2.Спецификация дерева, леса, бинарного дерева
3.Естественное соответствие бинарного дерева и леса
4.Обходы бинарных деревьев и леса
23.09.2014 |
Деревья |
1 |

23.09.2014 |
Деревья |
2 |

. Определения дерева, леса, бинарного дерева. Скобочное представление
В курсе «Дискретная математика»:
Дерево – связный граф, не содержащий циклов.
23.09.2014 |
Деревья |
3 |

23.09.2014 |
Деревья |
4 |

Определение (рекурсивное)
Дерево – конечное множество Т, состоящее из одного или более узлов, таких, что
а) имеется один специально обозначенный узел, называемый корнем данного дерева;
б) остальные узлы (исключая корень) содержатся в m 0 попарно не пересекающихся множествах
Т1, Т2, ..., Тm, каждое из которых, в свою очередь, является деревом. Деревья Т1, Т2, ..., Тm называются поддеревьями данного дерева.
|
|
a |
|
|
|
|
b |
c |
|
d |
|
i |
j |
h |
e |
f |
g |
|
|
|
|
|
k
23.09.2014 |
Деревья |
5 |

Дерево T = (корень, T1, T2, …, Tm)
Терминология:
узел, лист, отец, сын, брат, предок, потомок Уровень узла (рекурсивно):
1)корень имеет уровень 1;
2)другие узлы имеют уровень, на единицу больший их уровня в содержащем их поддереве этого корня.
уровень (a, Т ) |
|
1, |
если а корень дерева Т |
|
уровень (а, Тi ) 1, |
если а не корень дерева Т |
|
|
|
где Ti – поддерево корня дерева T, такое, что |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
a Ti. |
a |
1 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
b |
c |
e |
d |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
j |
h |
f |
|
|
|
|
|
|
|
|
|
|
|
g |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23.09.2014 |
|
|
Деревья |
k |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2
3
4
6

Если в определении дерева существен порядок перечисления поддеревьев Т1, Т2, ..., Тm,
то дерево называют упорядоченным и говорят о «первом» (Т1), «втором» (Т2) и т. д. поддеревьях данного корня (старший брат и т.п.).
В терминологии теории графов это «конечное ориентированное (корневое) упорядоченное дерево».
Лес – это множество (обычно упорядоченное),
состоящее из некоторого (быть может, равного нулю) числа непересекающихся деревьев.
Тогда пункт б) определения дерева:
б) узлы дерева, за исключением корня, образуют лес.
Дерево T = (корень, лес поддеревьев)
23.09.2014 |
Деревья |
7 |

Представление дерева:
a ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ |
а |
b |
i |
|
||
b |
▓▓▓▓▓▓▓▓▓▓▓▓▓▓ |
|
|
j |
|
|
|
i |
▓▓▓▓▓▓▓▓▓▓ |
|
|
|
|
c |
j |
▓▓▓▓▓▓▓▓▓▓ |
|
c |
h |
|
▓▓▓▓▓▓▓▓▓▓▓▓▓▓ |
|
|
||||
d |
h |
▓▓▓▓▓▓▓▓▓▓ |
|
d |
e |
|
▓▓▓▓▓▓▓▓▓▓▓▓▓▓ |
|
|
||||
|
e ▓▓▓▓▓▓▓▓▓▓ |
|
|
f |
k |
|
|
f |
▓▓▓▓▓▓▓▓▓▓ |
|
|
||
|
g |
k ▓▓▓▓▓▓▓ |
|
g |
|
|
|
▓▓▓▓▓▓▓▓▓▓ |
|
|
|
а
б
а – в виде уступчатого списка; б – в виде «упрощенного» уступчатого списка
23.09.2014 |
Деревья |
8 |

Скобочное представление дерева и леса:
<лес > ::= пусто | < дерево > < лес >,
<дерево > ::= ( < корень > < лес > ).
a
b |
c |
d |
i |
j |
h |
e |
f |
g |
k
(0a (1b (2i2) (2j2)1) (1c (2h2)1) (1d (2e2) (2f (3k3)2) (2g2)1)0)
( a ( b ( i ) ( j ) ) ( c ( h ) ) ( d ( e ) ( f ( k ) ) ( g ) ) )
23.09.2014 |
Деревья |
9 |

Бинарные деревья
Бинарное дерево конечное множество узлов, которое либо пусто, либо состоит из корня и двух непересекающихся бинарных деревьев, называемых правым поддеревом и левым поддеревом.
a |
a |
|
b |
b |
(a (b ) ) |
|
( a (b )) |
Скобочное представление бинарного дерева (БД):
<БД > ::= < пусто > | < непустое БД >,
<пусто > ::= ,
<непустое БД > ::= ( < корень > < БД > < БД > ).
23.09.2014 |
Деревья |
10 |