los niveles de impresión de árbol de búsqueda binaria

votos
1

Tengo una clase binaria estructura de datos de árbol de búsqueda que posee nodos que son objetos en el lado de la clase que actúa como un árbol binario de búsqueda.

La clase es demasiado largo para publicar aquí, pero básicamente se trata de cómo funciona. Si quiero imprimir el valor superior de la bst, diría

print (self._root)

Si quería moverse hacia el lado izquierdo del árbol (lo mismo con ir a la derecha, sólo hay que poner la derecha en lugar de izquierda), diría

print (self._root._left)

Espero que esto es suficiente para que me puede ayudar con mi problema

Así que en mi problema, si tengo una BST como:

      6
     / \
    3   8
   / \   \
  1  4   10

Quiero ser capaz de imprimir:

6

3
8

1
4
10

He escrito una función recursiva de recorrido:

def traverse(self):

        a = []
        self._traverse_aux(self._root, a)   
        return a

def _traverse_aux(self, node, a):

        if node is not None:
            self._traverse_aux(node._left, a)
            a.append(node._value)
            self._traverse_aux(node._right, a)
        return

Cómo siempre, esto imprime los valores en una sola matriz:

[1, 3, 4, 6, 8, 10]

¿Cómo puedo conseguirlo para imprimir la forma que yo quiero más arriba?

Publicado el 19/03/2014 a las 14:51
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

De manera óptima, vas a querer responder a esta forma recursiva. Este tipo de recorrido, en particular, se llama primero en amplitud. Aquí están algunas notas sobre el recorrido de los árboles binarios de búsqueda que podrían ser de utilidad para usted, a pesar de que están en java.

Aquí es también una cuestión muy similar (posiblemente duplicados), aunque, como opuesta a la solución de forma recursiva una solución se le da el uso de bucles.

Respondida el 19/03/2014 a las 15:08
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more