Проверка наличия заданного числа в сформированном бинарном дереве - 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 найден, программа выводит
Да
. Если узел не найден, программа выводитНет
. - В конце программы необходимо реализовать код для удаления дерева.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д