In una struttura ad albero, come può un valore/chiave essere unito a ogni ramo in cui il valore è la somma del valore del ramo e tutti i valori del ramo padre?Inserisci somma di tutti i rami parentali in ciascun ramo di una struttura ad albero nidificato
Ad esempio, partendo con struttura ad albero segue:
[{ :v 1
:_ [{ :v 2 }
{ :v 3
:_ [{ :v 5 }]}
{ :v 4 }]}]
come potrebbe essere ricreato come:
[{ :v 1
:sum 1
:_ [{ :v 2
:sum 3 }
{ :v 3
:sum 4
:_ [{ :v 5
:sum 9 }]}
{ :v 4
:sum 5 }]}]
ho cercato con walk
. Penso che questo potrebbe essere l'approccio corretto. Ma finora non ci sono riuscito.
Grande, grazie! Mi chiedo solo, qui non esiste un'ottimizzazione della coda. Non sono sicuro che sarebbe un problema, ma potrebbe essere? – Ross
Dipende da quanto è profondo il tuo albero, se è * veramente * profondo, potrebbe essere un problema. Usare un costrutto 'loop ... recur' per fare ciò è abbastanza complicato. Almeno non riesco a pensare a un modo immediato per farlo senza usare le chiusure lampo, poiché per ogni bambino è necessario visitare ciascuno dei loro rispettivi figli, il che significa che ci sono potenzialmente più rami che devono essere elaborati in ogni dato nodo. –
Ok, grazie per le informazioni extra. Lascerò la cerniera per l'apprendimento futuro e corro con questo ora. – Ross