Che cosa significa "appiattire"?

12

Se avessi un albero, "appiattire" implicitamente implicherebbe

get a list of all items in the tree, traversing from left to right?

Se ho una lista collegata, "appiattire" implicitamente implica

get a list of all items, starting with this one

Ad esempio, un elenco collegato sarebbe costituito da un'eccezione che aggrega la sua eccezione interna. Sarebbe giusto nominare un metodo sull'eccezione "flattenInnerExceptions" con l'aspettativa che restituisca una sequenza di eccezioni, prima l'eccezione più esterna e l'eccezione più interna - l'ultima?

    
posta GregC 23.04.2011 - 17:52
fonte

1 risposta

24

Se avessi una lista di liste, "flatten" sarebbe l'operazione che restituisce una lista di tutti gli elementi foglia in ordine, cioè qualcosa che cambia:

[[a, b, c], [d, e, f], [g, h i]]

In

[a, b, c, d, e, f, g, h, i]

Per gli alberi, l'appiattimento sta generando un elenco di tutte le foglie nell'ordine di attraversamento naturale (NB: poiché solo le foglie sono nel risultato, non importa se pensi che questo sia un traversamento pre-, in- o post-ordine .)

Di conseguenza, per un elenco semplice l'operazione "flatten" è per definizione una trasformazione dell'identità.

L'appiattimento può essere eseguito in stadi o gradi. Ad esempio:

[[[a, b], [c, d]], [[e, f], [g, h]]]

può essere convertito in:

[[a, b, c, d], [e, f, g, h]]

e quindi per:

 [a, b, c, d, e, f, g, h]
    
risposta data 23.04.2011 - 18:06
fonte

Leggi altre domande sui tag