Vi esto en un documento y alguien argumentó que puede haber como mucho log (n) veces la rotación cuando eliminamos un nodo de un árbol AVL. Creo que podemos lograr esto generando un árbol AVL tan desequilibrado como sea posible. El problema es cómo hacer esto. Esto me ayudará mucho a investigar sobre la rotación de eliminación. ¡Muchas gracias!¿Cómo generar un árbol AVL lo más desequilibrado posible?
Respuesta
Si desea hacer un árbol AVL máximo desequilibrada, que están buscando una Fibonacci tree, que se define de la siguiente manera inductiva:
- Un árbol de Fibonacci de orden 0 está vacía.
- Un árbol de Fibonacci de orden 1 es un nodo único. árbol
- Un Fibonacci de orden n + 2 es un nodo cuyo hijo izquierdo es un árbol de Fibonacci de orden n, y cuyo derecho del niño es un árbol de Fibonacci de orden n + 1.
Por ejemplo, he aquí una de Fibonacci árbol de orden 5:
los árboles de Fibonacci representan la cantidad máxima de inclinación que un árbol AVL puede tener, ya que si el factor de equilibrio eran más desequilibrada el factor de equilibrio de cada nodo excedería los límites colocado por los árboles AVL.
Se puede usar esta definición para generar muy fácilmente árboles ladeados máximo AVL:
function FibonacciTree(int order) {
if order = 0, return the empty tree.
if order = 1, create a single node and return it.
otherwise:
let left = FibonacciTree(order - 2)
let right = FibonacciTree(order - 1)
return a tree whose left child is "left" and whose right child is "right."
Espero que esto ayude!
Nice answer. Si solo hubiera una imagen para ir con eso. –
(Nótese en particular que cada no hoja tiene un "factor" de saldo diferente de 0.) –
- 1. ¿Cómo es realmente desequilibrado el ejemplo de Wikipedia de un árbol AVL desequilibrado?
- 2. balanceando un árbol AVL (C++)
- 3. AVL diccionario árbol
- 4. Árbol AVL contra árbol B
- 5. Equilibrio de un árbol binario (AVL)
- 6. ¿Por qué es el árbol avl más rápido para buscar que el árbol negro rojo?
- 7. Manejo duplica llaves dentro de un árbol AVL
- 8. Cómo crear CreateFile lo más rápido posible
- 9. ¿Cuándo elegir el árbol RB, B-Tree o AVL?
- 10. Borrar un BufferedImage transparente lo más rápido posible
- 11. Cómo generar funcionalmente un árbol de primer orden. (Con Haskell)
- 12. Envío de un iMessage lo más simple posible iOS
- 13. Fusionando 2 árboles AVL DIFERENTES
- 14. .NET built-in AVL-Tree?
- 15. Biblioteca para generar un árbol de decisión
- 16. Concatenar/fusionar/unir dos árboles AVL
- 17. ¿Cómo funciona un árbol rojo-negro?
- 18. Generar estructura de árbol de csv
- 19. Utilidad para encontrar cadenas repetidas lo más largas posible
- 20. Son AVL Trees Evil?
- 21. Paréntesis desequilibrado con __attribute__ en g ++
- 22. ¿Cómo puedo generar un árbol de llamadas inversas para un proyecto Delphi?
- 23. Generar el árbol de llamadas de script de shell
- 24. Declaración de variables lo más tarde posible y pasando método que vuelve como un parámetro
- 25. ¿Es posible determinar si el texto en un dbEdit es más largo que lo visible?
- 26. Generar color más claro/más oscuro en css usando javascript
- 27. API del árbol compilador de Java: ¿cómo lo configuro?
- 28. Cómo cambiar los iconos más/menos del árbol SWT
- 29. Si es posible generar un archivo PDF desde un UITableView?
- 30. (Python) Contar líneas en un enorme (> 10 GB) presentar lo más rápido posible
Vea también: http://stackoverflow.com/questions/19622572/how-to-generate-maximally-unbalanced-avl-trees –