¿Qué significa "aplanar"?

12

Si tuviera un árbol, "aplanaría" implicaría intuitivamente

  

obtener una lista de todos los elementos en el árbol, atravesando de izquierda a derecha?

Si tengo una lista vinculada, "aplanaría" implicaría intuitivamente

  

obtenga una lista de todos los artículos, comenzando con este

Por ejemplo, una lista vinculada se compondría de una excepción que agregue su excepción interna. ¿Sería justo nombrar un método en la excepción "flattenInnerExceptions" con la expectativa de que devolvería una secuencia de excepciones, la excepción más externa primero y la excepción más interna, la última?

    
pregunta GregC 23.04.2011 - 17:52

1 respuesta

24

Si tuviera una lista de listas, "aplanar" sería la operación que devuelve una lista de todos los elementos de hoja en orden, es decir, algo que cambia:

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

En

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

Para los árboles, el aplanamiento está generando una lista de todas las hojas en orden de recorrido natural (NB: dado que solo hay hojas en el resultado, no importa si piensa en esto como en recorrido de pre, en o posterior a la orden .)

Como consecuencia, para una lista simple, la operación de "aplanamiento" es, por definición, una transformación de identidad.

El aplanamiento se puede realizar en etapas o grados. Por ejemplo:

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

se puede acoplar a:

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

y luego a:

 [a, b, c, d, e, f, g, h]
    
respondido por el Donal Fellows 23.04.2011 - 18:06

Lea otras preguntas en las etiquetas