二分探索木の「ランク」とは何ですか、またどのように役立ちますか?


8

ランク付けされた二分探索木とは何か、なぜランク付けが重要なのかについて、ちょっと心に納得できません。誰かが私のためにいくつかのことを明確にしてくれることを期待しています。

調べた内容:
私が読んだことから、ランク付けされた二分探索木は、各ノードに変数「ランク」が付加されているツリーです。

ここでの質問では、誰かが二分探索木のノードのランクを決定するために次のことができると述べています:

ランクをゼロから始めます。バイナリ検索がルートから下に進んでいくときに、検索がスキップするすべての左側のサブツリーのサイズを合計します。また、検索されたアイテムよりも小さいパスに沿ったノードも含めます。これらは、検索パス上の正しい子の親にすぎません。

質問:
ランクは、ツリー内の特定のノードに到達するために必要なノードの数(ルートの場合は1つ)を反映する単なる数値のようです。そうですか?それだけではノードのランクがノードの深さと同じになるだけのように思われるので、それは私には正しくないと思われました。

また、「重量」と「ランク」の違いは何ですか?特定のバイナリ検索ツリーのノードに重みが付けられている場合、それはユーザー/開発者によってランダムな値が割り当てられているだけですか?

最後に、ランクを付ける意味は何ですか?私の最初の考えは、優先順位を示すために使用できるということです。しかし、その場合、開発者はなぜウェイトを使用しないのですか?

その他:ここ
のサイトも確認しまし。ランクの計算方法を説明していますが、まだ概念が理解できていません。

助けてくれてありがとう。

回答:


11

この本(3.2章)によると、BSTのノードにはランクがあります。k 正確に kBSTの他のキーは小さいです。したがって、キーに従ってすべてのBSTノードを順序付けすると、ランクのある各ノードはk とる k-位。


1

サイズまたは高さによるランク結合を行っているかどうかに依存すると思います。サイズによるランク結合を使用するノードのランクは、そのノードのサブツリーにあるノードの数を示す場合があります。高さによるランク結合を使用するノードのランクは、そのノードからそのノードのサブツリーの最も遠い葉までのパスにあるエッジの数を示します。


0

上記のHEKTOによる回答に追加して、一意の要素を持つBSTのランクを計算するには、

左の子のランク=親のランク-1-右のサブツリーの要素数

そして、

右の子のランク=親のランク+ 1 +左のサブツリーの要素数

それは一般的なものを見つけるために使用することができます ithO(h)時間、つまりツリーのバランスが取れている場合はO(log n)時間でのBSTの順序統計。したがって、要素の中央値、または要素の中で最大/最小のi番目の要素を見つけると便利です。

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