Un árbol binario desequilibrado tiene una profundidad mayor de la necesaria para contener todos los datos. Hablando estrictamente, esta noción solo se aplica a los árboles de búsqueda binarios, ya que los árboles binarios por sí solos no hacen mucho.
Un árbol de búsqueda binaria desequilibrado es lo que obtiene de ciertos patrones de uso dada una ingenua función de inserción y eliminación. El código de inserción ingenuo se vería así:
def insert (at, x):
si en es nulo:
devolver nuevo nodo (x)
- ¿Es necesario aprender Java antes de comenzar el curso de Estructuras de datos y Algoritmos en el IIT en Delhi?
- ¿Qué algoritmo es mejor para una variante 4 * 4 * 4 * 4 del último dedo del pie tic-tac considerando un límite de tiempo de 15 segundos?
- La variación es cuánto cambia su algoritmo dados los nuevos datos. ¿Qué significa esto?
- ¿Cuál es el algoritmo más eficiente para encontrar el késimo elemento más pequeño en una matriz que tiene n elementos desordenados?
- ¿Alguien ha trabajado en un algoritmo para predecir la corrupción de los funcionarios del gobierno público utilizando la minería de datos y el análisis predictivo?
si at.val <x:
at.left = insert (at.left, x)
más si at.val> x:
at.right = insert (at.right, x)
regresar a
En el peor de los casos, un árbol binario tiene la misma profundidad que la cantidad de elementos: todos los nodos tendrían un solo hijo. Esto puede suceder si usa el código anterior para insertar una lista ordenada en un árbol vacío.
Por lo tanto, un árbol desequilibrado no es mejor que una lista vinculada. Tiene [matemática] O (N) [/ matemática] búsqueda, inserción y eliminación de claves arbitrarias.
Los árboles de búsqueda equilibrados, por otro lado, son bastante más complicados de implementar, pero pueden garantizar la búsqueda, inserción y eliminación de [math] O (log_2 (N)) [/ math] para cualquier patrón de acceso. Los ejemplos incluyen árboles rojo-negros, árboles AVL y muchos otros. Wikipedia tiene muy buenos artículos sobre cada uno de estos.