L'ho visto su un foglio di carta e qualcuno ha obiettato che al momento della cancellazione di un nodo di un albero AVL può esserci al massimo il log (n) di rotazione. Credo che possiamo ottenere questo generando un albero AVL il più sbilenco possibile. Il problema è come farlo. Questo mi aiuterà molto nella ricerca della cosa di rotazione di rimozione. Grazie mille!Come generare un albero AVL il più spoglio possibile?
risposta
Se si vuole fare un albero al massimo sbilenco AVL, si sono alla ricerca di un Fibonacci tree, che è definito induttivamente come segue:
- Un Fibonacci albero di ordine 0 è vuoto.
- Un albero di ordine 1 di Fibonacci è un nodo singolo.
- Un Fibonacci albero di ordine n + 2 è un nodo il cui figlio sinistro è un albero di Fibonacci di ordine n e il cui diritto del bambino è un albero di Fibonacci di ordine n + 1.
Per esempio, ecco una Fibonacci albero di ordine 5:
gli alberi Fibonacci rappresentano la quantità massima di disallineamento che un albero AVL può avere, poiché se il fattore di equilibrio erano più squilibrata il fattore di equilibrio di ciascun nodo supererebbe i limiti locale dagli alberi AVL.
È possibile utilizzare questa definizione per generare molto facilmente al massimo sbilenco alberi 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."
Spero che questo aiuti!
Risposta piacevole. Se solo ci fosse un'immagine per andare con esso. –
(Nota in particolare che ogni non-foglia ha "fattore" di bilanciamento diverso da 0.) –
- 1. Albero di ricerca binario su albero AVL
- 2. bilanciamento di un albero AVL (C++)
- 3. Quando scegliere albero RB, albero B o albero AVL?
- 4. Gestione chiavi duplicate all'interno di un albero AVL
- 5. .NET AVL-Tree incorporato?
- 6. Come fai a sapere dove eseguire le rotazioni in un albero AVL?
- 7. Libreria per generare un albero decisionale
- 8. Come generare un albero in modo funzionale. (Con Haskell)
- 9. Risolvi sistema triangolare superiore spoglio
- 10. Gli alberi AVL sono malvagi?
- 11. Un albero binario contiene un altro albero?
- 12. Come posso generare un albero di chiamata inversa per un progetto Delphi?
- 13. Albero TableView con più NSMutableArray
- 14. Come rendere CreateFile il più veloce possibile
- 15. È possibile generare un singolo file .pot dalla documentazione Sphinx?
- 16. Come generare più report con moka?
- 17. Come ridurre il mio albero di analisi in un albero di sintassi astratto?
- 18. Qual è il modo più veloce per ottenere più copie di un albero in python?
- 19. Differenza tra alberi AVL e alberi splay
- 20. È possibile generare automaticamente progetti Xcode?
- 21. Come generare un PDF?
- 22. Albero a più livelli UITableView in iOS
- 23. Modello C++ Metaprogrammazione - È possibile generare il codice generato?
- 24. Come generare un intervallo alternato?
- 25. È possibile generare il file corretto PKCS12 (.pfx) in Python?
- 26. È possibile generare un diagramma di un'intera webapp Django?
- 27. Il modo più semplice per costruire un albero da un elenco di antenati
- 28. Antenna comune più bassa in un albero binario
- 29. Max Valore di un albero a più vie in OCaml
- 30. È possibile visualizzare la struttura ad albero del codice Java?
Vedere anche: http://stackoverflow.com/questions/19622572/how-to-generate-maximally-unbalanced-avl-trees –