Бинарное дерево. Написать программу, которая строит Т1 – копию заданного дерева Т - Free Pascal
Формулировка задачи:
Написать программу, которая строит Т1 – копию заданного дерева Т.
Решение задачи: «Бинарное дерево. Написать программу, которая строит Т1 – копию заданного дерева Т»
textual
Листинг программы
{$mode objfpc} type ptree = ^ttree; ttree = record info : integer; l, r : ptree; end; function MakeTree(s : integer; left_tree, right_tree : ptree) : ptree; begin new(result); result^.info := s; result^.l := left_tree; result^.r := right_tree; end; function CopyTree(root : ptree) : ptree; // вот функция копирования begin if root = nil then result := nil else begin new(result); result^.info := root^.info; result^.l := CopyTree(root^.l); result^.r := CopyTree(root^.r); end; end; procedure Symm(root : ptree; level : integer); begin if root = nil then exit; Symm(root^.r, level + 1); writeln(root^.info:3*level); Symm(root^.l, level + 1); end; var root : ptree; t : ptree; begin // Это будет заданное дерево root := MakeTree(20, MakeTree(7, MakeTree(4, nil, nil), MakeTree(16, nil, MakeTree(18, nil, nil))), MakeTree(38, MakeTree(37, nil, nil), MakeTree(43, nil, nil))); symm(root, 0); // выводим оригинал writeln; t := CopyTree(root); // Копируем его в новое дерево symm(t, 0); // И сравниваем полученное дерево с оригиналом writeln; readln; // не забудь удалить деревья end.
Объяснение кода листинга программы
- Программа создает тип данных
ptree
, который представляет собой узел бинарного дерева. - Функция
MakeTree
создает новый узел с заданным значением и двумя пустыми поддеревьями. - Функция
CopyTree
рекурсивно копирует заданное дерево, создавая новое дерево с теми же значениями и структурой. - Процедура
Symm
рекурсивно выводит уровень дерева в отступе, начиная с заданного узла. - В основной части программы создается исходное дерево с помощью функции
MakeTree
. - Процедура
Symm
вызывается для вывода исходного дерева. - Создается копия исходного дерева с помощью функции
CopyTree
. - Процедура
Symm
вызывается для вывода скопированного дерева. - В конце программы требуется ввести данные, чтобы завершить работу программы.
- Все деревья освобождаются, когда они больше не нужны, чтобы избежать утечки памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д