AVL tree y RBTree tienen sus respectivas ventajas y desventajas. Lo percibirás mejor si ya has aprendido cómo funcionan.
AVL es ligeramente más rápido que RB Tree en la operación de inserción porque habría como mucho una rotación involucrada en la inserción, mientras que podría haber dos para RBTree.
RBTree solo requieren como máximo tres rotaciones en el borrado, pero esto no está garantizado en AVL. Por lo tanto, puede eliminar nodos más rápido que AVL.
Sin embargo, sobre todo, ambos tienen una altura de árbol logarítmica estricta.
Elija cualquier subárbol, la propiedad que hace AVL "equilibrado" garantiza que la diferencia de altura entre dos subárboles secundarios es como máximo uno, es decir, de forma intuitiva, todo el árbol está rígidamente equilibrado.
Pero cuando se trata de un árbol de RB, la regla se vuelve más "floja", ya que la propiedad de RBTree solo puede garantizar que la profundidad de un árbol no sea más del doble del logaritmo del número total de nodos.
Acá algunos datos que pueden ser más preciso:
altura de
Un AVL árbol es estrictamente menor que: 1.44log (n + 2) -0,328 (aproximadamente)
A red- la altura del árbol negro es como máximo 2log (n + 1)
Consulte https://en.wikipedia.org/wiki/AVL_tree#Comparison_to_other_structures para obtener información detallada.
Lea un libro sobre estructuras de datos. Pero si recuerdo (fuera de mi cabeza) correctamente, un árbol AVL se aproxima más a estar perfectamente equilibrado que un árbol RB, a costa de un inserto en un AVL que es considerablemente más caro que un RB. –
Sí porque es más corto y, por lo tanto, tiene menos nodos de arriba a abajo. Tal vez una imagen sería útil: http://en.wikipedia.org/wiki/File:AVL_Tree_Rebalancing.svg – 0x4f3759df