Skip to content

Instantly share code, notes, and snippets.

@bavadim
Created April 3, 2024 06:57
Show Gist options
  • Save bavadim/d5702e30b60ee76fa572e4901fd99879 to your computer and use it in GitHub Desktop.
Save bavadim/d5702e30b60ee76fa572e4901fd99879 to your computer and use it in GitHub Desktop.
Code snippet
% Определяем предикат для префиксного обхода дерева
preorder(Tree, List) :- preorder(Tree, [], List).
% Базовый случай: пустое дерево приводит к накопленному списку
preorder([], Acc, Acc).
% Рекурсивный случай: обрабатываем узел и его поддеревья
preorder([Node|Subtrees], Acc, List) :-
preorder(Subtrees, Acc, NewAcc), % Сначала обрабатываем поддеревья
List = [Node|NewAcc]. % Добавляем узел в начало списка
% Вспомогательный предикат для обработки списка поддеревьев
preorder([], Acc, Acc). % Базовый случай для списка поддеревьев
preorder([Tree|Trees], Acc, List) :-
preorder(Tree, Acc, NewAcc), % Обрабатываем первое поддерево
preorder(Trees, NewAcc, List). % Продолжаем с оставшимися поддеревьями
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment