Составители:
Рубрика:
Здесь вектор типа Mem представляет собой память для хранения одного
бинарного дерева (или нескольких бинарных деревьев, ограниченных в сово-
купности). Элемент вектора есть запись типа Node, содержащая узел и ссылки
на поддеревья. На рис.3.11 приведен пример представления бинарного дерева.
Дерево представляется переменной типа BinT, например b:BinT, значение ко-
торой b=3 есть номер элемента массива, в котором хранится корень дерева.
Фактически переменная b играет роль ссылки на корень дерева (или адреса
корня в векторной памяти). Пустому дереву соответствовало бы значение
b=0, т.е. в этом представлении константа NillBT = 0. Элементы вектора, не за-
нятые под хранение узлов дерева, образуют свободную память, которую
удобно организовать в виде линейного циклического списка (для этого ис-
пользуется одно из полей звена Node (например, поле LSub)). При этом эле-
мент вектора с индексом (адресом) 0 играет роль ссылки на начало списка
свободной памяти.
Рис. 3.11. Пример ссылочного представления бинарного дерева на базе вектора.
Справа – бинарное дерево; слева – его размещение в массиве, играющем
роль динамической памяти.
Мы не будем более подробно рассматривать эту реализацию, поскольку
она во многом аналогична ссылочной реализации линейного списка на базе
вектора, рассмотренной ранее в 1.4.
Бинарное
дерево:
a
d
c b
e
f
g
2
0
f
0
6
5
a
4
0
c
1
8
b
7
9
10
e
0
0
d
0
11
0
g
0
12
0
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
LSu
Info
RSu
Связи списка
свободной
п
а
мяти:
62
Здесь вектор типа Mem представляет собой память для хранения одного
бинарного дерева (или нескольких бинарных деревьев, ограниченных в сово-
купности). Элемент вектора есть запись типа Node, содержащая узел и ссылки
на поддеревья. На рис.3.11 приведен пример представления бинарного дерева.
Дерево представляется переменной типа BinT, например b:BinT, значение ко-
торой b=3 есть номер элемента массива, в котором хранится корень дерева.
Фактически переменная b играет роль ссылки на корень дерева (или адреса
корня в векторной памяти). Пустому дереву соответствовало бы значение
b=0, т.е. в этом представлении константа NillBT = 0. Элементы вектора, не за-
нятые под хранение узлов дерева, образуют свободную память, которую
удобно организовать в виде линейного циклического списка (для этого ис-
пользуется одно из полей звена Node (например, поле LSub)). При этом эле-
мент вектора с индексом (адресом) 0 играет роль ссылки на начало списка
свободной памяти.
Связи списка Бинарное
LSu Info RSu свободной дерево:
памяти:
2 a
0:
1: 0 f 0
2: 6 b c
3: 5 a 4
0 c 1 d e f
4:
5: 8 b 7
6: 9 g
7: 10 e 0
8: 0 d 0
9: 11
10: 0 g 0
11: 12
12: 0
Рис. 3.11. Пример ссылочного представления бинарного дерева на базе вектора.
Справа – бинарное дерево; слева – его размещение в массиве, играющем
роль динамической памяти.
Мы не будем более подробно рассматривать эту реализацию, поскольку
она во многом аналогична ссылочной реализации линейного списка на базе
вектора, рассмотренной ранее в 1.4.
62
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
