Нужно напечатать все элементы с листьев дерева - Turbo Pascal
Формулировка задачи:
Привет! Нужна помощь с деревьями. Нужно напечатать все элементы с листьев дерева. Буду очень благодарен!
Решение задачи: «Нужно напечатать все элементы с листьев дерева»
textual
Листинг программы
- program pr;
- type
- Pnode = ^node;
- node = record
- data: integer;
- left, right: Pnode;
- end;
- var
- tree: Pnode;
- n, x, i: integer;
- procedure addtotree(var tree: Pnode; x: integer);
- begin
- if tree = nil then
- begin
- new(tree);
- tree^.data := x;
- tree^.left := nil;
- tree^.right := nil;
- exit;
- end;
- if x < tree^.data then
- addtotree(tree^.left, x)
- else addtotree(tree^.right, x);
- end;
- procedure lkp(tree: Pnode);
- begin
- if tree = nil then exit;
- Lkp(Tree^.left);
- write(' ', Tree^.data);
- Lkp(Tree^.right);
- end;
- procedure PrintList(ANode: pnode);
- begin
- if anode = nil then exit;
- if(anode ^.Left = nil) and (anode^.Right = nil) then
- write(' ', anode^.Data);
- PrintList(anode^.Left);
- PrintList(anode^.Right);
- end;
- begin
- writeln('Введите количество элементов');
- readln(n);
- for i := 1 to n do
- begin
- x := random(21);
- addtotree(tree, x);
- end;
- writeln('Все элементы дерева');
- lkp(tree);
- writeln;
- writeln('Листья');
- PrintList(tree);
- end.
Объяснение кода листинга программы
- Создается тип данных Pnode, который представляет узел дерева. Узел содержит данные, а также ссылки на левого и правого потомков.
- Создается переменная tree типа Pnode, которая будет представлять дерево.
- Переменная n и переменная x инициализируются значением 1 и случайным числом соответственно.
- Если дерево равно nil, то создается новый узел, инициализируется его данным значением, а также устанавливаются ссылки на левого и правого потомков как nil.
- Если x меньше значения data дерева, то вызывается функция addtotree, которая добавляет x в левое поддерево.
- Если x больше или равно значению data дерева, то вызывается функция addtotree, которая добавляет x в правое поддерево.
- Вызывается функция lkp, которая рекурсивно обрабатывает левое и правое поддерево дерева.
- Выводится сообщение
Все элементы дерева
. - Вызывается функция PrintList, которая рекурсивно обрабатывает левое и правое поддерево дерева.
- Выводится сообщение
Листья
. - Выводится список листьев дерева.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д