Проверка наличия заданного числа в сформированном бинарном дереве - Free Pascal
Формулировка задачи:
Создать программой числовое двоичное дерево. Написать программу:проверки наличия заданного числа в сформированном дереве.
Решение задачи: «Проверка наличия заданного числа в сформированном бинарном дереве»
textual
Листинг программы
{$mode objfpc}
type
ptree = ^ttree;
ttree =
record
data : integer;
left, right : ptree;
end;
function MakeTree(value : integer; left_tree, right_tree : ptree) : ptree;
begin
new(result);
result^.data := value;
result^.left := left_tree;
result^.right := right_tree;
end;
function Find(root : ptree; X : Integer) : ptree;
begin
if root = nil then result := nil
else
if X = root^.data then result := root
else
if X < root^.data then result := Find(root^.left, X)
else result := Find(root^.right, X)
end;
var
root : ptree;
begin
// Создаем дерево
root :=
MakeTree(20,
MakeTree(7,
MakeTree(4, nil, nil),
MakeTree(16, nil, nil)),
MakeTree(38,
MakeTree(37, nil, nil),
MakeTree(43, nil, nil)));
// Проверяем, есть ли в нем четверка. Должно выдать "Да"
if Find(root, 4) <> nil then writeln('Да')
else writeln('Нет');
// удаление дерева - попробуй сделать самостоятельно
end.
Объяснение кода листинга программы
- Программа создает тип данных
ptree, который представляет собой узел бинарного дерева. - Функция
MakeTreeсоздает новый узел с заданным значением и двумя указателями на поддеревья (левое и правое). - Функция
Findрекурсивно ищет в дереве узел с заданным значением. Если найденный узел не является листовым, функция вызывает сама себя для поиска в поддереве. - В основной части программы создается экземпляр бинарного дерева, используя функцию
MakeTree. - Затем программа вызывает функцию
Findдля проверки наличия числа 4 в дереве. - Если узел с числом 4 найден, программа выводит
Да. Если узел не найден, программа выводитНет. - В конце программы необходимо реализовать код для удаления дерева.