Написать процедуру, которая печатает (по одному разу) все вершины дерева - Pascal
Формулировка задачи:
Написать процедуру, которая печатает (по одному разу) все вершины дерева. Что-то я не могу догнать, как это делается, тк со структурой обработки данных вообще не лажу. Помогите, кто может.
Решение задачи: «Написать процедуру, которая печатает (по одному разу) все вершины дерева»
textual
Листинг программы
procedure print_subtree (x:integer);
begin
if x = nil then
writeln('Tut pusto')
else begin
writeln (x);
print_subtree (l[x]);
print_subtree (r[x]);
end;
end;
Объяснение кода листинга программы
- В процедуре
print_subtreeпринимается один аргументx, представляющий собой номер вершины дерева, которую необходимо напечатать. - Если
xравноnil, то выводится сообщениеTut pusto, что означает, что дерево пустое. - Если
xне равноnil, то выполняются следующие действия:- Выводится значение
x. - Вызываются рекурсивно две процедуры
print_subtreeдля левого и правого поддеревьевl[x]иr[x], соответственно. - После вызова процедур
print_subtreeдля левого и правого поддеревьев, вызывается процедураprint_subtreeдляxснова.
- Выводится значение
- Код использует массив
lиr, которые представляют собой ссылки на левое и правое поддерево вершиныx. - Код использует цикл
while, который продолжается до тех пор, пока не будет достигнут конец дерева или не будут вызваны рекурсивные вызовы для всех поддеревьев. - Код использует оператор
write, чтобы напечатать каждую вершину дерева. - Код использует операторы
ifиelse, чтобы проверить, является лиxравнымnil, и в зависимости от этого выводит сообщение или вызывает рекурсивные вызовы. - Код использует операторы
callдля вызова процедурprint_subtreeдля левого и правого поддеревьев. - Код использует операторы
recursive, чтобы сделать процедуру рекурсивной.