回転数が奇数のスプレーツリー


9

アイテムをスプレイツリーに挿入すると、回転はジグザ​​グまたはジグジグパターンに基づいてペアで実行されます。実行するローテーションの数が奇数の場合、リーフから開始する追加のローテーションを実行するか、追加のローテーションを保存してルートで実行することができます。それは重要ですか?

たとえば、添付された画像では、4をBSTに挿入し、それをルートに「展開」します。図の上部で、最初にリーフノードにジグザグペアを配置し、下部からジグザグスプレーを実行して、ルートに最後の右回転を残します。図の下部では、最初に葉から奇数回転を行い、次にルートまでジグザグに広げます。

どちらが正しい?または、両方とも通常のスプレイツリーパフォーマンスにつながりますか?

奇数の回転数を表示する2つの方法

回答:


4

1+rtrバツtrあなた:=ログの重さ あなたのサブツリーΦT=Σバツ のノード Trt

アクセスレンマの証明では、単一のジグ/ジグ-ザグ/ジグ-ジグなどの操作のコストを調べます。あなたが得る

  1. 1+r+あなたrあなたr+あなた

  2. r+あなたrあなた

1+rtrバツ

回転の順序を変更すると、同じ合計が得られます。唯一の違いは、「+ 1」が最初のローテーションからのものであり、最後のローテーションからのものではないことです。中央でジグ回転することもできます。さらなる(古典的な)分析はすべて、アクセスレンマに依存します。

ただし、最後に1回転するのは、ノードの深度が偶数か奇数かが事前にわからないためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.