¿Existe algún método para crear un árbol de búsqueda binaria equilibrado?Creación de un árbol de búsqueda binaria equilibrada
Ejemplo:
1 2 3 4 5 6 7 8 9
5
/\
3 etc
/\
2 4
/
1
Estoy pensando que hay un método para hacer esto, sin necesidad de utilizar los árboles más complejos autobalanceados. De lo contrario, puedo hacerlo por mi cuenta, pero alguien probablemente ya lo haya hecho :)
¡Gracias por las respuestas! Este es el código Python definitiva:
def _buildTree(self, keys):
if not keys:
return None
middle = len(keys) // 2
return Node(
key=keys[middle],
left=self._buildTree(keys[:middle]),
right=self._buildTree(keys[middle + 1:])
)
La mediana no es la terminología correcta. Por un lado, la mediana podría no existir en los datos originales. Por ejemplo, la mediana de 3 y 4 es 3.5. Ver http://en.wikipedia.org/wiki/Median –
Tienes razón. Aparentemente (de la página de Wikipedia a la que hace referencia) la palabra es medoid. He hecho una edición. –