Составители:
Рубрика:
(a (b (d Λ (h Λ Λ)) (e Λ Λ) ) (c (f (i Λ Λ)(j Λ Λ)) (g Λ (k (l Λ Λ) Λ))) ).
a
c
b
g
d e f
Рис. 3.4. Бинарное дерево
Можно упростить скобочную запись бинарного дерева, исключив “лиш-
ние” знаки Λ по правилам:
1) ( < корень > < непустое БД > Λ) ≡ ( < корень > < непустое БД > ),
2) ( < корень > Λ Λ) ≡ ( < корень > ).
Тогда, например, скобочная запись бинарного дерева, изображенного на
рис.3.4, будет иметь вид
(a (b (d Λ h) (e)) (c (f (i) (j)) (g Λ (k (l))))).
3.2. Спецификация дерева, леса, бинарного дерева
Рассмотрим функциональную спецификацию структуры данных дерева c
узлами типа : Tree of α = Tree ( α ). При этом лес деревьев Forest ( Tree ( α ) )
определим как L_list ( Tree ( α ) ) через уже известную структуру линейного
списка L_list с базовыми функциями Cons, Head, Tail, Null (см.1.6). Базовые
операции с деревом задаются набором функций:
1) Root : Tree → α;
2) Listing : Tree → Forest;
3) ConsTree : α ⊗ Forest → Tree
и аксиомами (∀u: α; ∀f: Forest ( Tree ( α ) ); ∀t: Tree ( α ) ):
А1) Root ( ConsTree ( u , f ) ) = u;
А2) Listing ( ConsTree ( u , f ) ) = f;
А3) ConsTree ( Root ( t ) , Listing ( t ) ) = t.
Здесь функции Root и Listing - селекторы: Root выделяет корень дерева, а
Listing выделяет лес поддеревьев корня данного дерева. Конструктор ConsTree
порождает дерево из заданных узла и леса деревьев.
Тот факт, что структура данных Forest явно определена через
L_list ( Tree ), позволяет реализовать структуру дерева (леса) на базе другой
h
j i k
l
46
(a (b (d Λ (h Λ Λ)) (e Λ Λ) ) (c (f (i Λ Λ)(j Λ Λ)) (g Λ (k (l Λ Λ) Λ))) ).
a
b c
g
d e f
h
i j k
l
Рис. 3.4. Бинарное дерево
Можно упростить скобочную запись бинарного дерева, исключив “лиш-
ние” знаки Λ по правилам:
1) ( < корень > < непустое БД > Λ) ≡ ( < корень > < непустое БД > ),
2) ( < корень > Λ Λ) ≡ ( < корень > ).
Тогда, например, скобочная запись бинарного дерева, изображенного на
рис.3.4, будет иметь вид
(a (b (d Λ h) (e)) (c (f (i) (j)) (g Λ (k (l))))).
3.2. Спецификация дерева, леса, бинарного дерева
Рассмотрим функциональную спецификацию структуры данных дерева c
узлами типа : Tree of α = Tree ( α ). При этом лес деревьев Forest ( Tree ( α ) )
определим как L_list ( Tree ( α ) ) через уже известную структуру линейного
списка L_list с базовыми функциями Cons, Head, Tail, Null (см.1.6). Базовые
операции с деревом задаются набором функций:
1) Root : Tree → α;
2) Listing : Tree → Forest;
3) ConsTree : α ⊗ Forest → Tree
и аксиомами (∀u: α; ∀f: Forest ( Tree ( α ) ); ∀t: Tree ( α ) ):
А1) Root ( ConsTree ( u , f ) ) = u;
А2) Listing ( ConsTree ( u , f ) ) = f;
А3) ConsTree ( Root ( t ) , Listing ( t ) ) = t.
Здесь функции Root и Listing - селекторы: Root выделяет корень дерева, а
Listing выделяет лес поддеревьев корня данного дерева. Конструктор ConsTree
порождает дерево из заданных узла и леса деревьев.
Тот факт, что структура данных Forest явно определена через
L_list ( Tree ), позволяет реализовать структуру дерева (леса) на базе другой
46
Страницы
- « первая
- ‹ предыдущая
- …
- 44
- 45
- 46
- 47
- 48
- …
- следующая ›
- последняя »
