4.3 Динамические структуры данных
____________________________________________________________________
4 |
8 |
9 |
5 |
10 |
11 |
6 |
12 |
13 |
7 |
14 |
15 |
8 |
-1l |
-1 |
|
9 |
-1 |
-1 |
|
10 |
-1 |
-1 |
|
11 |
-1 |
-1 |
|
12 |
-1 |
-1 |
|
13 |
-1 |
-1 |
|
14 |
-1 |
-1 |
|
15 |
-1 |
-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 4.29. Окончательная схема представления двоичного дерева с помощью |
массива |
При обходе этого двоичного дерева слева последовательность обработки вершин будет следующей:
8, 4, 9, 2, 10, 5, 11, 1, 12, 6, 13, 3, 14, 7, 15
Блок схему алгоритма обхода мы с вами уже рассматривали, см. рис. 4.23.
Последовательность состояний стека для данного алгоритма будет сле-
дующей, рис. 4.30:
Шаг 1 |
Шаг 2 |
Шаг 3 |
Шаг 4 |
Шаг 5 |
Шаг 6 |
Шаг 7 |
Шаг 8 |
Шаг 9 |
4 |
|
|
|
|
|
|
|
|
2 |
2 |
|
5 |
|
|
|
6 |
|
1 |
1 |
1 |
1 |
1 |
|
3 |
3 |
3 |
Шаг 10 |
Шаг 11 |
Шаг 12 |
|
|
|
Рис. 4.300. Состояния стека при обходе двоичного дерева слева
Напишем программу обхода двоичного дерева слева. Сначала отладим программу для уже готового дерева. Далее мы научимся организовывать ввод дерева в диалоговом режиме с клавиатуры. Для этого подготовьте в текстовом