Cómo insertar un conjunto de números en un árbol AVL vacío para que no se requiera rotación

Hay muchas maneras de hacer esto. Quizás conceptualmente lo más simple es llenar el árbol nivel por nivel, llenando un nivel por completo antes de comenzar a llenar el siguiente. Esta estrategia funciona porque garantiza que en ningún momento habrá dos nodos de hoja cuya altura difiera en más de uno. La condición de equilibrio del árbol AVL siempre se mantendrá en este caso.

Para organizar los números de modo que se llenen en el árbol de manera ordenada nivel por nivel, puede calcular la forma del árbol (cuántos nodos en cada nivel) y luego calcular el rango de cada nodo (índice en una matriz ordenada que contiene los elementos) .

Otra estrategia posible es tomar la mediana como la raíz (tomar cualquier elemento del medio si hay un número par de elementos), y luego construir recursivamente un subárbol izquierdo a partir de los elementos más pequeños que la mediana y un subárbol derecho a partir de los elementos mayores que el mediana.

Esta estrategia funciona porque los subárboles izquierdo y derecho diferirán en tamaño como máximo en 1 nodo, y podemos demostrar que esto se traduce en una diferencia de altura de como máximo 1, dada esta estrategia de construcción de árboles. Además, dado que cada uno de los subárboles se construye recursivamente utilizando el mismo procedimiento, cada subárbol también tendrá sus subárboles que no difieren en altura en más de 1.

Primero, ordena tu set de menor a mayor.

Si el conjunto tiene una longitud impar, tome la mediana de su conjunto ordenado.

si el conjunto tiene una longitud uniforme, tome el punto medio inferior del conjunto ordenado.

Elimine el elemento que tomó del conjunto y agréguelo a su árbol AVL. Repita los dos pasos anteriores hasta que el conjunto ordenado esté vacío.

Si bien esto funciona, debe saber que ordenar un conjunto desordenado en una matriz (usando la combinación de clasificación o clasificación de montón) tiene una eficiencia de O (n log n) al agregar un elemento a un árbol AVL (con o sin rotación) tiene O ( log n). Esto hace que pasar por este algoritmo de ordenamiento para conjuntos de datos más grandes sea una pérdida de tiempo.