2011-02-10 13 views
19

¿Cuál es la complejidad del tiempo de cruce de árboles, estoy seguro de que debe ser obvio, pero mi pobre cerebro no puede resolverlo en este momento.¿Cuál es la complejidad del tiempo de cruce de árboles?

+3

Es lineal Art of Programming Vol 1 página 326 – new299

+0

¿Ese es el arte de la programación de Knuth? Intento encontrar esto para darle a un amigo un buen ejemplo de que para un árbol n-ary es lineal. – Nicholas

+0

sí Knuth's "El arte de la programación de computadoras" – new299

Respuesta

20

Depende del tipo de recorrido que esté realizando y del algoritmo, pero normalmente sería O (n) donde n es la cantidad total de nodos en el árbol. La implementación recursiva canónica de primer recorrido de profundidad consumirá memoria (en la pila) en el orden del nivel más profundo, que en un árbol equilibrado sería log (n).

+0

¿Es esto cierto para un árbol n-ary? Tengo una estructura de datos que es un árbol de máxima profundidad 4 y para atravesarlo, mi amigo está usando 3 para bucles, y está diciendo que su algoritmo se ejecuta en tiempo 'O (n^3) ', pero creo que se está ejecutando en' n' tiempo, 'n' es el número total de nodos en el árbol – Nicholas

+4

@Nocholas, está en lo correcto y su amigo está equivocado. Está en). – Uri

1

No que acaba de ser n de un árbol con n nodos?

Visitas cada árbol de permiso una vez, ¿no? Entonces diría que es lineal.

+0

Supongo que debería ser un árbol con "n nodos" y no "n hojas". – aamadmi

+0

Tienes razón, terminoligy equivocado :) – Nanne

+0

@Nanne Con el algoritmo correcto, de hecho es una complejidad lineal en el tiempo (visitando cada nodo una vez), pero aún no puede tener una complejidad lineal en el espacio. Como usar la pila. – Tim

Cuestiones relacionadas