Бинарное дерево. Написать программу, которая строит Т1 – копию заданного дерева Т - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу, которая строит Т1 – копию заданного дерева Т.

Решение задачи: «Бинарное дерево. Написать программу, которая строит Т1 – копию заданного дерева Т»

textual
Листинг программы
  1. {$mode objfpc}
  2. type
  3.   ptree = ^ttree;
  4.   ttree =
  5.   record
  6.     info : integer;
  7.     l, r : ptree;
  8.   end;
  9.  
  10.  
  11.  
  12. function MakeTree(s : integer; left_tree, right_tree : ptree) : ptree;
  13. begin
  14.   new(result);
  15.   result^.info := s;
  16.   result^.l := left_tree;
  17.   result^.r := right_tree;
  18. end;
  19.  
  20. function CopyTree(root : ptree) : ptree; // вот функция копирования
  21. begin
  22.   if root = nil then result := nil
  23.   else
  24.   begin
  25.     new(result);
  26.     result^.info := root^.info;
  27.     result^.l := CopyTree(root^.l);
  28.     result^.r := CopyTree(root^.r);
  29.   end;
  30. end;
  31.  
  32. procedure Symm(root : ptree; level : integer);
  33. begin
  34.   if root = nil then exit;
  35.   Symm(root^.r, level + 1);
  36.   writeln(root^.info:3*level);
  37.   Symm(root^.l, level + 1);
  38. end;
  39.  
  40. var
  41.   root : ptree;
  42.   t : ptree;
  43.  
  44. begin
  45.  
  46.   // Это будет заданное дерево
  47.   root :=
  48.     MakeTree(20,
  49.              MakeTree(7,
  50.                       MakeTree(4, nil, nil),
  51.                       MakeTree(16, nil,
  52.                                MakeTree(18, nil, nil))),
  53.              MakeTree(38,
  54.                       MakeTree(37, nil, nil),
  55.                       MakeTree(43, nil, nil)));
  56.  
  57.   symm(root, 0); // выводим оригинал
  58.   writeln;
  59.   t := CopyTree(root); // Копируем его в новое дерево
  60.   symm(t, 0); // И сравниваем полученное дерево с оригиналом
  61.   writeln;
  62.  
  63.   readln;
  64.   // не забудь удалить деревья
  65. end.

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

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

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


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

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы