Нужно напечатать все элементы с листьев дерева - Turbo Pascal

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

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

Привет! Нужна помощь с деревьями. Нужно напечатать все элементы с листьев дерева. Буду очень благодарен!

Решение задачи: «Нужно напечатать все элементы с листьев дерева»

textual
Листинг программы
  1. program pr;
  2. type
  3.   Pnode = ^node;
  4.   node = record
  5.     data: integer;
  6.     left, right: Pnode;
  7.   end;
  8. var
  9.   tree: Pnode;
  10.   n, x, i: integer;
  11. procedure addtotree(var tree: Pnode; x: integer);
  12. begin
  13.   if tree = nil then
  14.   begin
  15.     new(tree);
  16.     tree^.data := x;
  17.     tree^.left := nil;
  18.     tree^.right := nil;
  19.     exit;
  20.   end;
  21.   if x < tree^.data then
  22.     addtotree(tree^.left, x)
  23.   else addtotree(tree^.right, x);
  24. end;
  25. procedure lkp(tree: Pnode);
  26. begin
  27.   if tree = nil then exit;
  28.   Lkp(Tree^.left);
  29.   write('  ', Tree^.data);
  30.   Lkp(Tree^.right);
  31. end;
  32. procedure PrintList(ANode: pnode);
  33. begin
  34.   if anode = nil then exit;
  35.   if(anode ^.Left = nil) and (anode^.Right = nil) then
  36.     write(' ', anode^.Data);
  37.   PrintList(anode^.Left);
  38.   PrintList(anode^.Right);
  39. end;
  40. begin
  41.   writeln('Введите количество элементов');
  42.   readln(n);
  43.   for i := 1 to n do
  44.   begin
  45.     x := random(21);
  46.     addtotree(tree, x);
  47.   end;
  48.   writeln('Все элементы дерева');
  49.   lkp(tree);
  50.   writeln;
  51.   writeln('Листья');
  52.   PrintList(tree);
  53. end.

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

  1. Создается тип данных Pnode, который представляет узел дерева. Узел содержит данные, а также ссылки на левого и правого потомков.
  2. Создается переменная tree типа Pnode, которая будет представлять дерево.
  3. Переменная n и переменная x инициализируются значением 1 и случайным числом соответственно.
  4. Если дерево равно nil, то создается новый узел, инициализируется его данным значением, а также устанавливаются ссылки на левого и правого потомков как nil.
  5. Если x меньше значения data дерева, то вызывается функция addtotree, которая добавляет x в левое поддерево.
  6. Если x больше или равно значению data дерева, то вызывается функция addtotree, которая добавляет x в правое поддерево.
  7. Вызывается функция lkp, которая рекурсивно обрабатывает левое и правое поддерево дерева.
  8. Выводится сообщение Все элементы дерева.
  9. Вызывается функция PrintList, которая рекурсивно обрабатывает левое и правое поддерево дерева.
  10. Выводится сообщение Листья.
  11. Выводится список листьев дерева.

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


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

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

14   голосов , оценка 4.143 из 5

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

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

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