Создайте программу обхода дерева по принципу левый – правый – корень - Turbo Pascal
Формулировка задачи:
Создайте программу обхода дерева по принципу левый – правый – корень pls)0
Решение задачи: «Создайте программу обхода дерева по принципу левый – правый – корень»
textual
Листинг программы
type TInf=integer; pTree=^Tree; Tree=record Inf:TInf; Left,Right:pTree; end; procedure AddToTree(var aT:pTree;const aInf:TInf); begin If aT=nil then begin New(aT); aT^.Inf:=aInf; aT^.Left:=nil; aT^.Right:=nil; end else if (aInf>=aT^.Inf) then AddToTree(aT^.Right,aInf) else AddToTree(aT^.Left,aInf); end; procedure PrintT(aT:pTree); begin If aT=nil then exit; PrintT(aT^.Left); PrintT(aT^.Right); write(aT^.Inf:7); end; var T:pTree; i,n:integer; a:TInf; begin T:=nil; write('Количество узлов в дереве: '); readln(n); randomize; for i := 1 to n do begin a:=random(51)-25; write(a:7); AddToTree(T,a); end; writeln; writeln('Постфиксный обход дерева:'); PrintT(T); readln; end.
Объяснение кода листинга программы
- Создается тип данных
TInf
, который представляет собой целое число. - Создается переменная
pTree
, которая является указателем на структуруTree
. - Создается структура
Tree
, которая содержит три поля:Inf
(целое число),Left
(указатель наpTree
) иRight
(указатель наpTree
). - Создается процедура
AddToTree
, которая принимает указатель на структуруTree
и целое числоaInf
в качестве параметров. ЕслиaT
равноnil
, то создается новый экземпляр структурыTree
и устанавливаются значения полейInf
,Left
иRight
. В противном случае выполняется рекурсивный вызов процедурыAddToTree
дляaT^.Left
илиaT^.Right
в зависимости от того, какое из значенийaInf
больше, чем значение поляInf
вaT
. - Создается процедура
PrintT
, которая принимает указатель на структуруTree
в качестве параметра. ЕслиaT
равноnil
, то выход из программы. Затем вызываются рекурсивные функцииPrintT
дляaT^.Left
иaT^.Right
, а затем выводится значение поляInf
вaT
. - Создается переменная
T
, которая инициализируется какnil
. - Выводится сообщение
Количество узлов в дереве:
, а затем считывается числоn
от пользователя. - Инициализируется генератор случайных чисел.
- Запускается цикл, который повторяется
n
раз. В каждой итерации считывается случайное числоa
от 25 до 70. - Вызывается процедура
AddToTree
с указателемT
и значениемa
в качестве аргументов. - Выводится значение
a
от пользователя. - Выводится сообщение
Постфиксный обход дерева:
, а затем вызывается процедураPrintT
с указателемT
в качестве аргумента. - Выводится символ новой строки.
- Выводится сообщение
readln(n)
, чтобы пользователь мог увидеть, что программа успешно завершилась.