¿Cuál es la diferencia entre un árbol AVL y un árbol de búsqueda binario?

Árbol de búsqueda binaria

Un árbol de búsqueda binario, también conocido como árbol binario ordenado, es una variante de árboles binarios en los que los nodos están ordenados.

  • Un árbol se llama árbol de búsqueda binario si cumple las siguientes dos condiciones:
  1. Todos los nodos deben tener como máximo dos hijos. (Árbol binario)
  2. En un árbol de búsqueda binario, todos los nodos en el subárbol izquierdo tienen un valor menor que el del nodo raíz. En consecuencia, todos los nodos en el subárbol derecho tienen un valor igual o mayor que el nodo raíz.

Árbol de búsqueda binaria

Dado que los nodos en un árbol de búsqueda binario están ordenados, el tiempo necesario para buscar un elemento en el árbol se reduce considerablemente.

Árbol AVL

  • El árbol AVL es un árbol de búsqueda binaria de equilibrio propio inventado por GMAdelson-Velsky y EMLandisin 1962. El árbol se llama AVL en honor a sus inventores.
  • En un árbol AVL, las alturas de los dos subárboles de un nodo pueden diferir como máximo en uno. Debido a esta propiedad, el árbol AVL también se conoce como árbol de altura equilibrada.
  • En AVL Tree, el factor de equilibrio de todos y cada uno de los nodos debe ser -1, 0 o 1. El factor de equilibrio no es más que la diferencia entre el nivel del subárbol izquierdo y el subárbol derecho y se calcula de la siguiente manera
    • factor de equilibrio = altura del subárbol izquierdo – altura del subárbol derecho
    • por ejemplo: factor de equilibrio del nodo 45 en la figura (a) = 3 (altura del subárbol izquierdo de 45) – 2 (altura del subárbol derecho de 45) = 1

Aquí en la figura anterior (a) el factor de equilibrio del nodo raíz es 1, por lo que se deja pesado AVL Tree, la figura (b) el factor de equilibrio del nodo raíz es -1, por lo que es correcto AVL Tree y la figura (c) el factor de equilibrio de la raíz El nodo es 0, por lo que está equilibrado AVL Tree. Si el factor de equilibrio de cualquier nodo en el árbol no está en el rango de -1,0 o 1, entonces no es un árbol AVL y para que sea un árbol AVL se requiere rotación (rotaciones LL, RR, LR, RL) en el árbol .

Nota: Aquí puede encontrar una mejor comprensión de todo tipo de árboles en la estructura de datos:

  1. ¿Cuál es la diferencia entre Binary Tree, Binary Search Tree, AVL Tree, 2-3 Tree y B-trees?
  2. Material completo del árbol con ejemplos.

Buena pregunta, aunque no me parece muy apropiado diferenciar el árbol AVL y el árbol de búsqueda binaria, ya que el árbol AVL es solo un caso especial del Árbol de búsqueda binaria (BST) . Esa especialidad proviene del hecho de que también es de naturaleza equilibrada. Entonces puede decir que cada árbol AVL exhibe dos propiedades fundamentales:

  1. Es un árbol de búsqueda binaria en sí mismo.
  2. Es un árbol equilibrado. Se reequilibra cada vez que la adición o eliminación de un nodo causa un desequilibrio en el árbol.

Ahora, si sabemos qué es un árbol de búsqueda binaria, entonces el único concepto que queda por entender es el equilibrio.

Cada nodo en un árbol equilibrado exhibe la siguiente propiedad:

  • La diferencia entre las alturas del subárbol izquierdo y el subárbol derecho siempre está en el rango [-1,1] con ambos límites incluidos.

Cada vez que un árbol AVL se desequilibra (debido a la inserción o eliminación de nodos), restaura el equilibrio deseado con la ayuda de un concepto llamado rotación. Dependiendo de la magnitud del desequilibrio que haya sucedido, el árbol AVL podría tener que sufrir una o más rotaciones en los nodos calculados para restablecer el equilibrio deseado.

Puede obtener más información sobre el equilibrio de los árboles AVL en este excelente video de YouTube:

La única diferencia entre el árbol AVL y el árbol de búsqueda binaria es que el árbol AVL es un árbol BST de equilibrio automático .

Árbol equilibrado significa : para cada nodo i en el árbol, la diferencia entre las alturas de su hijo izquierdo y derecho es 0 o 1,

es decir, abs (altura (izquierda (i)) – altura (derecha (i))) <2.

Ventajas:

El algoritmo con menor complejidad temporal siempre GANA .

Tiempo -Complejidad (peor de los casos):

  • Árbol AVL
  • Inserción – O (log (n))
  • Eliminación: O (log (n))
  • Buscando – O (log (n))
  • BST
    • Inserción – O (n)
    • Supresión – O (n)
    • Buscando – O (n)

    Ejemplo: considere seguir los árboles. (Izquierda – AVL-Tree) y (Derecha – BST).

    • Considere que desea insertar 8 en el árbol:
    • Comparaciones de BST: 7 comparaciones para insertar 8.
    • AVL-Tree – 3 comparaciones para insertar 8.
  • Considera que quieres buscar 6.
    • BST: después de 5 comparaciones, obtienes 6.
    • AVL: después de 1 comparación, obtienes 6.

    Entonces, para cada operación, el rendimiento de AVL-Tree es mejor que BST.

    Nota: AVL Tree toma más memoria que BST porque para cada nodo debe mantener un factor de equilibrio o un factor de altura.

    Para obtener más información sobre AVL-Tree: https://en.wikipedia.org/wiki/AV

    Un árbol AVL es en sí mismo un árbol de búsqueda binario en el que la operación de inserción canónica se modifica de modo que al final de cada operación de inserción, el árbol se mantenga en equilibrio.

    Un árbol de búsqueda binario es simplemente un árbol binario donde, para cada nodo, su subárbol izquierdo contiene solo nodos con valores menores y su subárbol derecho contiene solo nodos con valores mayores. Eso es.

    Ahora, imagine que construye un árbol de búsqueda binario de este tipo, comenzando con una raíz con el valor 1. Ahora, todos los valores posteriores que inserte se ordenan y aumentan. Que vas a tener No muy parecido a un árbol, ¿verdad?

    Una construcción de árbol AVL asegura el equilibrio del árbol en cada operación de inserción. En todos los demás aspectos, sigue siendo un árbol de búsqueda binario.

    El árbol AVL y el árbol de búsqueda binaria son los mismos, pero el árbol AVL tiene la restricción de que la diferencia entre la altura del subárbol izquierdo y el subárbol derecho debe ser 0, 1 o -1.

    Si algún árbol de búsqueda binario cumple estas condiciones, se llamará árbol AVL.

    El árbol de búsqueda binaria + CONDICIÓN DE ALTURA es un árbol AVL.

    Consulte: Introducción a los algoritmos de Cormen
    https://books.google.co.in/books

    Un árbol AVL es un tipo específico de árbol binario que garantiza el equilibrio del árbol después de agregar, actualizar o eliminar una clave. Otra alternativa a un árbol AVL es un árbol rojo-negro.

    Mantener el árbol equilibrado es primordial para un rendimiento óptimo. Esto asegura que la altura sea logarítmica en el número de nodos de hoja. El peor de los casos es un árbol degradado que prácticamente actúa como una lista vinculada cuando se busca una clave, que tiene una altura que coincide con el número de nodos de hoja.

    Un árbol AVL es un árbol de búsqueda binario autoequilibrado, equilibrado para mantener la altura O (log n). Un árbol B es un árbol equilibrado, pero no es un árbol binario. Los nodos tienen más hijos, lo que aumenta el tiempo de búsqueda por nodo pero disminuye el número de nodos que la búsqueda necesita visitar.

    Para obtener más información sobre el tema que puede visitar: ¿Qué es el árbol AVL y dar un ejemplo? El | Práctica | GeeksforGeeks

    y

    AVL-Tree Archives – GeeksforGeeks

    Menos tiempo de búsqueda en todos los casos. El tiempo de búsqueda en cualquier árbol depende de su altura. En el caso de los árboles AVL, el árbol está equilibrado (la altura del subárbol izquierdo es casi la misma que la altura del subárbol derecho). Entonces la altura del árbol AVL es O (logn). Entonces, el tiempo de búsqueda en el árbol AVL es O (logn). Mientras que en el caso del árbol de búsqueda binario, en el peor de los casos, la altura puede convertirse en O (n). Entonces, en este caso, el tiempo de búsqueda es O (n)

    Aquí tenemos que entender un concepto.

    Sea k la diferencia entre la altura del subárbol izquierdo y el subárbol derecho.

    Si k = 0, entonces es un BST (árbol de búsqueda binaria)

    Si k <= 1, entonces es un árbol AVL.

    Cualquiera de las condiciones anteriores no debe ser violada. Si es así, el árbol se convierte en un árbol binario.

    Altura del subárbol izquierdo: distancia desde la raíz hasta la parte inferior izquierda del árbol.

    Altura del subárbol derecho: viceversa

    ¡Gracias!

    Feliz aprendizaje

    Un AVL es un árbol de búsqueda binario que siempre está equilibrado.

    La forma en que se equilibra es contando cuántos niveles tiene cada nodo en su rama izquierda versus su rama derecha.

    Cuando se desequilibra, necesariamente a través de una modificación (inserción o eliminación), se equilibra mediante una rotación.

    http://www.cise.ufl.edu/~nemo/co

    rotaciones | Javaero


    El árbol AVL es una versión extendida del árbol de búsqueda binaria que mantiene su altura en todos los niveles.

    Definición : Un árbol de búsqueda binario balanceado donde la altura de los dos subárboles (hijos) de un nodo difiere en como máximo uno. La búsqueda, la inserción y la eliminación son O (log n), donde n es el número de nodos en el árbol .

    Complejidades de tiempo:

    Búsqueda: O (log (n))

     Inserción: O (log (n))

     Eliminación: O (log (n))

    Definición : Un árbol de búsqueda binaria (BST) es un árbol en el que todos los nodos siguen las propiedades mencionadas a continuación: el subárbol izquierdo de un nodo tiene una clave menor o igual que la clave de su nodo principal. El subárbol derecho de un nodo tiene una clave mayor que la clave de su nodo padre.

    Complejidades de tiempo:

    Búsqueda: O (n)

     Inserción: O (n)

     Eliminación: O (n)

    Entonces, la principal ventaja de usar el árbol AVL es su complejidad de tiempo.

    Puede realizar cualquier operación en o (log (n)) solo para que la tasa de recuperación de datos también sea rápida en comparación con el árbol de búsqueda binario.

    El árbol AVL también es un árbol de equilibrio automático.

    Espero que obtengas tu respuesta !!

    Feliz codificación !!

    Árbol de búsqueda binaria: – Un árbol binario, en cada nodo La raíz es mayor que el hijo izquierdo y la raíz es más pequeña que su hijo derecho.

    Árbol AVL: – El árbol AVL se define como el árbol de búsqueda binaria equilibrado. Aquí, Balance significa en cada nodo que la diferencia en la altura del Subárbol izquierdo y el Subárbol derecho es -1, 0 o 1. Si el factor de equilibrio es distinto de estos tres valores, entonces el árbol no se llama árbol equilibrado.

    Para un nodo, el nivel máximo del árbol de búsqueda binaria podría ser n y min log, mientras que en el caso de AVL Tree el número de niveles siempre es log.

    En el peor de los casos, el árbol de búsqueda binaria de costo es O (n ^ 2) y O (nlogn) en el mejor caso, mientras que el costo del árbol AVL es O (nlogn) en todos los casos (mejor caso, caso promedio y peor caso).

    Agregando a las respuestas anteriores:

    Siempre que (después de la operación de inserción) la diferencia entre el subárbol izquierdo y el subárbol derecho sea> = 2, entonces en AVL realizamos operaciones de rotación, estas operaciones reducen la diferencia en las alturas de los subárboles izquierdo y derecho mientras mantienen intacta la propiedad BST.

    Las operaciones de rotación (rotación izquierda y derecha) toman un tiempo constante ya que solo se cambian algunos punteros allí y mantienen la altura del árbol como LogN

    AVL Tree está optimizado BST.

    Solo mire los casos límite para BST donde la altura NO es logn, simplemente se convierte en una Lista vinculada con una sola rama y nodos secundarios únicos (Ejemplo: inserte 50, 60, 70, 80, 90, 100. El resultado es una lista vinculada como estructura)

    AVL evita este escenario reordenando el árbol completo en cada inserción, no permitiendo que la altura sea más que logn

    AVL es un árbol de búsqueda binario balanceado

    inserte este elemento en el árbol de búsqueda binaria
    1,2,3,4,5,6,7,8 vea su altura y ahora inserte este elemento en AVL y encuentre la altura, sabrá la diferencia

    More Interesting

    ¿Vale la pena pagar 6 x $ 49 por una estructura de datos y especialización de algoritmos en Coursera?

    Cómo calcular el producto máximo de una cadena entera usando k multiplicaciones

    ¿Cuáles son algunos patrones de diseño de C ++ para aplicaciones en tiempo real como el comercio algorítmico?

    ¿Cuál es el algoritmo de programación monotónico de velocidad en los sistemas operativos?

    Cómo evitar que el algoritmo de google para 'quiso decir' afecte mi sitio

    ¿Qué algoritmos debo saber para desarrollar una aplicación web sin conexión primero?

    Como estudiante de primer año de una sucursal que no es CS en un IIT, ¿cómo domino las estructuras de datos, los algoritmos y el aprendizaje automático por mi cuenta?

    Me resultó difícil entender los algoritmos de clasificación. ¡Cuando profundizo en los algoritmos, siento que mi mente se bloquea! ¿Qué debo hacer para sentirme cómodo con los algoritmos?

    ¿Cómo difieren la búsqueda lineal y binaria?

    El comportamiento emergente se encuentra en el núcleo de las ciencias físicas y de la vida: posiblemente por conveniencia computacional. ¿La teoría de la complejidad ofrece ideas aquí?

    ¿Cómo definirías la ordenación rápida en pocas palabras?

    ¿Cuál es el algoritmo para realizar la inserción en un árbol B?

    Cómo resolver esta relación de recurrencia usando el método de sustitución

    ¿Qué es el algoritmo de clasificación de Reddit?

    ¿Qué SDK y lenguaje de programación debo usar para codificar algoritmos de aprendizaje automático para predicciones en tiempo real?