平衡回転とは? わかりやすく解説

平衡回転

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2016/03/19 04:33 UTC 版)

AA木」の記事における「平衡回転」の解説

AA木は、赤黒木とは異なり、色ではなくレベル概念使って実装される。各ノードにはレベル格納され、常に以下の条件成り立つようになっている葉ノードレベルは1である。 左の子ノードレベル親ノードレベルより必ず1つ小さい。 右の子ノードレベル親ノードレベル等しいか1つ小さい。 右の孫ノードレベル祖父祖母ノードレベルより必ず小さい。 レベルが1より大きいノードは、必ず2つの子ノードを持つ。 AA木では平衡を保つための操作skewsplit2つだけである。skew は、挿入削除によって平左リンクが生じたときに(赤黒木言えば、左の赤リンクに相当する)、右回転させる操作である。split は、挿入削除によって平右リンクが2つ生じたときに(赤黒木言えば、赤ノード2つ連続する状態に相当する)、条件付きで左回転させる操作である。平リンクとは、子ノード親ノードと同じレベルであることを意味するfunction skew is input: T, 再平衡化が必要なAA木を表すノード output: 平衡化されAA木を表すノード if nil(T) then return Nil else if nil(left(T)) then return T else if level(left(T)) == level(T) then 平左リンクのポインタ入れ替える。 L = left(T) left(T) := right(L) right(L) := T return L else return T end ifend function Skew: function split is input: T, 再平衡化が必要なAA木を表すノード output: 平衡化されAA木を表すノード if nil(T) then return Nil else if nil(right(T)) or nil(right(right(T))) then return T else if level(T) == level(right(right(T))) then 平右リンクが2つある場合真ん中持ち上げて、それを返す。 R = right(T) right(T) := left(R) left(R) := T level(R) := level(R) + 1 return R else return T end ifend function Split:

※この「平衡回転」の解説は、「AA木」の解説の一部です。
「平衡回転」を含む「AA木」の記事については、「AA木」の概要を参照ください。

ウィキペディア小見出し辞書の「平衡回転」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「平衡回転」の関連用語

1
8% |||||

平衡回転のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



平衡回転のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのAA木 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS