ノードの完全なバイナリツリーの深さはどれくらいですか?


7

この質問では、完全なバイナリツリーの次の定義を使用します

最後のレベルを除くすべてのレベルが完全に満たされ、最後のレベルのすべてのノードが左側にある場合、レベルのバイナリツリーは完全です。TN

以下はAlgorithmsからの抜粋です。

これ()は、ノードを持つ完全なバイナリツリーの深さでもあります。(より正確には、です。)logNNlogN

上記の抜粋が真実なのはなぜですか?

もともとここで定義

回答:


7

高さ完全なバイナリツリーがどのように構築されるかを検討してください。1つはルートレベルの頂点、2つはルートの下の最初のレベル、4つは次の2番目のレベルというように、レベルまで続き、少なくとも1つの頂点、ただし最大で前のレベルの2倍。各レベルの頂点の数は2の累乗であることに注意してください(特殊なケースである最後を除く)。次に、 を使用して、2の最初の乗の合計はです: 、したがって hhth

1+i=0h12ini=0h2i
k2k+11
1+2h1n2h+112hn2h+11
2hn<2h+1

2を底とする対数を取る: 、我々は結論付けることができるので ようよりも大きい次の整数よりも少ないが、。

hlogn<h+1
h=logn
lognhh+1

1
floor(logn)がceiling(log(n + 1))-1と同じであることに注意してください。これは、等式を2 ^ h -1 <n <= 2 ^(h + 1)-1に変更することによっても導出できます。
KGhatak
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.