Ho una struttura ad albero di rose che sto rappresentando con Data.Tree. Ogni nodo nell'albero è etichettato con una coordinata (x, y). Devo implementare un modo per trovare il nodo nell'albero più vicino a una data coordinata della query e aggiungere un figlio a quel nodo.Attraversare un albero di rose con Data.Tree.Zipper
immagino dividendo questo in due operazioni:
attraversare l'albero per trovare il nodo che è più vicina a una determinata query coordinata
prendono il nodo trovato nel attraversamento prima e aggiungi è un bambino etichettato con la query precedente coordinare
l'unico modo che posso pensare di fare questo è quello di attraversare l'albero al punto 1 utilizzando Data.Tree .Zipper, e quindi utilizzando quella cerniera nel passaggio 2 per inserire un nodo in una posizione specifica.
Ho due domande:
questo è un modo efficace per affrontare il problema?
In tal caso, come utilizzare le funzioni in Data.Tree.Zipper per implementare il passaggio 1 sopra? Sto trovando l'attraversamento dell'albero difficile da implementare perché richiede una ricorsione in due dimensioni: profondità e larghezza.
Raccontaci di più sul passaggio 1. L'albero è organizzato in qualche modo? –
Ai fini di questa domanda, non vi è alcun ordine di bambini o relazione pertinente tra genitori e figli.Sono soddisfatto di eseguire un attraversamento completo dell'albero per cercare il nodo più vicino. – giogadi