Ho bisogno algoritmi di attraversamento per alberi arbitrarie sia in ordine attraversamento in profondità ed in ampiezza. La parte difficile è che ho bisogno di essere in grado di partire da un nodo arbitrario e continuare fino a quando non viene attraversato un altro nodo specifico.Attraversamento una struttura ad albero generale partendo da un nodo arbitrario in C#
Ora, posso utilizzare uno qualsiasi degli algoritmi ordinari e ignorare i nodi attraversati fino a raggiungere il nodo iniziale e continuare fino al nodo finale (che attualmente faccio) ma questo è brutto e inefficiente.
Qualsiasi suggerimento, per favore.
UPDATE: Ognuno dei miei nodi hanno un id ad essi associati. In alcuni casi, ho i riferimenti iniziali e finali del nodo con cui iniziare. In altri casi, mi vengono dati due Id, controllo se il nodo dato è il nodo di partenza o il nodo finale controllando i loro id. Io uso deep-first traversal per trovare il nodo di partenza. Sia il nodo iniziale che quello finale possono essere ovunque nella gerarchia. Spero che qualcuno possa inventare un'idea per il caso in cui ho già fornito riferimenti sia al nodo iniziale che al nodo finale. A proposito, i nodi dell'albero è in realtà scelti secondo un criterio di ordinamento, che parte da 0 per ciascuna delle sub-nodi di un nodo e v'è un nodo radice
Come si trova il nodo iniziale in un albero senza attraversarlo? – BrokenGlass
Hai * già * il nodo? Altrimenti, avresti bisogno di una seconda infrastruttura per accelerare la ricerca dei nodi di inizio/fine. – harold
Si prega di specificare come è strutturato il tuo albero. È stato implementato un ordinamento? Come sono collegati i nodi? –