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