私はこれをいくつかの論文で見て、誰かが、AVLツリーのノードを削除するときに最大でlog(n)回回転することができると主張しました。私たちはAVLツリーを可能な限り片寄って生成することでこれを実現できると信じています。問題はこれを行う方法です。これは、取り外し回転のことを調べるのに役立ちます。どうもありがとう!できるだけlopsidedとしてAVLツリーを生成するには?
5
A
答えて
9
あなたが最大限に偏っAVLツリーを作りたい場合は、次のように帰納的に定義されてFibonacci tree、探している:
- オーダー0のフィボナッチツリーが空です。
- オーダー1のフィボナッチツリーは単一ノードです。次数n + 2の
- Aフィボナッチ・ツリーは、その左の子次数n及び右の子のフィボナッチ・ツリーがあるフィボナッチオーダーのツリーのn + 1例えば
あるノードであり、ここでフィボナッチです順序5のツリー:
バランス係数がそれ以上偏った場合の各ノードのバランス係数が配置限界を超えてしまうので、フィボナッチ・ツリーは、AVLツリーを持つことができるスキューの最大量を表しますAVLツリーによって。
あなたは非常に簡単に最大限偏っ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."
は、この情報がお役に立てば幸い!
+1
ニースの答え。それに付随するイメージがあれば。 –
+0
(特に、すべての非リーフは、0とは異なるバランス "係数"を持つことに注意してください) –
関連する問題
- 1. は、AVLツリー
- 2. AVLはAVLツリーの何を表していますか?
- 3. RedBlackとAVLツリーC++
- 4. AVLツリーはインオーダートラバーサルが
- 5. ツリーを回転させてAVLツリーにする
- 6. AVLツリーが破損してプログラムがクラッシュするのを避けるために
- 7. 3ノード再構成AVLツリーとは何ですか?
- 8. AVLツリーのバランスをとる(C++)
- 9. レベルでAVLツリーを印刷する(C++)
- 10. AVLツリーとスプレイツリーの違い
- 11. アンバランスなAVLツリーの種類を見つける方法は?
- 12. AVLツリーの子セグメントプロジェクトでセグメンテーションフォルトが発生する
- 13. AVLツリーでサイズkの頂点を見つける
- 14. AVLツリーは複雑にO(n)で構築できますか?
- 15. AVLツリー挿入 - セグメンテーションフォールト
- 16. AVLツリー非再帰
- 17. AVLツリーの実装
- 18. PythonでのAVLツリーのパフォーマンス
- 19. n個のAVLツリーをマージする
- 20. これはAVLツリーですか?
- 21. AVLツリーにエラーが発生しました
- 22. trailingalの順にavlツリー
- 23. AVLツリーを使用して中間要素を見つけるランタイム
- 24. Red-BlackツリーとAVLツリーのバランス状態は同じですか?たとえば
- 25. AVLツリーのPreOrderトラバーサルを指定します。ツリーはユニークですか?
- 26. C++ AVLツリーの実装
- 27. 自己バランス化avlツリー
- 28. AVLツリー回転の問題
- 29. AVLツリー高さメソッドStackOverFlow Erroe
- 30. .NET内蔵のAVLツリー?
参照:http://stackoverflow.com/questions/19622572/how-to-generate-maximally-unbalanced-avl-trees –