Конструктор учебных заданий для электронного задачника Programming Taskbook - 30 стр.

UptoLike

Составители: 

30
Так выглядит на экране бинарное дерево с обратной связью (номера уровней на
данной иллюстрации не указаны).
Пример 7
Так выглядит на экране дерево общего вида (номера уровней и имена связанных
с деревом указателей на данной иллюстрации не указаны). В данном случае корень
дерева 13 имеет три непосредственных потомка: вершины 71, 73 и 29. Напомним, что
в дереве общего вида поле Left определяет первую (левую) дочернюю вершину, а по-
ле Right — очередную (правую) вершину-сестру.
Пример 8
Так выглядит на экране бинарное дерево с включенным режимом прокрутки.
Дополнительной особенностью этого дерева является наличие точек около каждой
его вершины. Это означает, что данное дерево является результирующим, причем па-
мять для всех его вершин должна быть выделена в программе учащегося.
procedure ShowPointer(NP: integer);
Процедура обеспечивает отображение указателя с номером NP при выводе те-
кущего линейного списка или дерева. Например, ее вызов вида ShowPointer(1) обес-
печил отображение указателя P
1
в примерах 1, 2 и 5. Если указатель номер NP равен
nil, то вызов процедуры ShowPointer игнорируется без вывода сообщения об ошибке.
Если указатель с номером NP не является нулевым и не связан ни с одним из элемен-
тов списка, то выводится сообщение об ошибке.
С одним элементом списка или дерева можно связать не более двух указателей
(исключение составляет последний элемент списка, с которым можно связать не бо-
лее трех указателей). Порядок вызова процедур ShowPointer для одного и того же
элемента списка является произвольным; при отображении указателей, связанных с
одним и тем же элементом, они выводятся в отсортированном порядке (например,
P
3
P
6
). В случае списков имена указателей отображаются над элементом, и при нали-
чии нескольких указателей на один элемент их имена располагаются слева направо. В
случае деревьев имена указателей располагаются под элементом, и при наличии не-
скольких указателей на один элемент их имена располагаются одно под другим. Если
количество указателей, связываемых процедурами ShowPointer с данным элементом
списка, превосходит максимально допустимое (например, с последним элементом
связывается четыре различных указателя), то список связанных указателей дополня-
ется символом ошибкизвездочкой (например,
P
1
P
2
P
3
*). Если с элементом бинар-
ного дерева связывается более двух указателей, то под вторым указателем изобража-
ется еще один указатель вида
P*. Символ ошибки * выделяется красным цветом.
Если указатель надо связать с элементом списка или дерева, помеченным точка-
ми (см. пример 8), то вызов процедуры ShowPointer для данного указателя надо вы-
полнить до того, как для соответствующего элемента списка или дерева будет вызва-
на процедура SetNewNode (в противном случае при вызове процедуры ShowPointer
будет выведено сообщение об ошибке «Не найден элемент с адресом P1»).