Salve a tutti, mi sto esercitando con ProLog e mi ritrovo a sbattere la testa contro la visita in ampiezza. Ho provato a scrivere del codice a riguardo ma dopo una 80ina di righe ho deciso di chiedere un vostro aiuto/consiglio.

Mi ritrovo con la seguente idea finale:
codice:
enqueue(Element, List, 
[List | [Element]]).
dequeue([_Head | Tail], Tail).


level_order(nil, []).
level_order([Node, Left, Right], List) :-
                                          enqueue(Right, Left , T3),
                                          level_order_(T3, Res),
                                          append(Res, [Node], List1),
                                          reverse(List1, List).


level_order_([], []).
level_order_([nil | Tail], Res) :- 
                                   level_order_(Tail, Res).


level_order_([[Node, Left, Right] | Tail], [Node | TailL]) :-
                                    enqueue(Left, Tail, New_Acc1),
                                    enqueue(Right, New_Acc1, New_Acc2),
                                    level_order_(New_Acc2, TailL). % mi da errore a questo livello di ricorsione
Continuerò a sbatterci la testa e spero di risolvere il problema .
Spero in un vostro sito, ciauz