Бинарное дерево. Написать программу, которая строит Т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.

Объяснение кода листинга программы

  1. Программа создает тип данных ptree, который представляет собой узел бинарного дерева.
  2. Функция MakeTree создает новый узел с заданным значением и двумя пустыми поддеревьями.
  3. Функция CopyTree рекурсивно копирует заданное дерево, создавая новое дерево с теми же значениями и структурой.
  4. Процедура Symm рекурсивно выводит уровень дерева в отступе, начиная с заданного узла.
  5. В основной части программы создается исходное дерево с помощью функции MakeTree.
  6. Процедура Symm вызывается для вывода исходного дерева.
  7. Создается копия исходного дерева с помощью функции CopyTree.
  8. Процедура Symm вызывается для вывода скопированного дерева.
  9. В конце программы требуется ввести данные, чтобы завершить работу программы.
  10. Все деревья освобождаются, когда они больше не нужны, чтобы избежать утечки памяти.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы