Tがn個の要素を持つ平衡BSTであり、Lが左側のサブツリー、Rが右側のサブツリーである場合、その深さが2log(n)+1以下であることをどのように証明できますか?
私が持っている帰納法による証拠がありますが、私はそれを取得していません。
(stackoverflowは主にプログラミング指向であることを理解していますが、バイナリ検索ツリーに関するいくつかの質問を見つけて試してみることにしました。うまくいかないことを願っています。:))
Tがn個の要素を持つ平衡BSTであり、Lが左側のサブツリー、Rが右側のサブツリーである場合、その深さが2log(n)+1以下であることをどのように証明できますか?
私が持っている帰納法による証拠がありますが、私はそれを取得していません。
(stackoverflowは主にプログラミング指向であることを理解していますが、バイナリ検索ツリーに関するいくつかの質問を見つけて試してみることにしました。うまくいかないことを願っています。:))
「バランスのとれた」の定義により、同じノードのすべての左右のサブツリーの深さは、最大で1つ異なります。「深さ」は通常、「木の根から葉までの最長の歩行のステップ数」として定義されます。たとえば、1つの根と2つの葉を持つBST(バランスの取れたBSTに配置できる唯一の方法で3つの要素)は次のようになります。深さ1(深さ2を与えるわずかに異なる定義を使用しているように見えますか?)、1つのルートと1つのリーフ(そのリーフがルートの左または右のサブツリーであるかどうかに関係なく)を持つと言われています、一方、葉(単一の要素)でもあるルートのみを持つものは、深さが0になります(要素がゼロのBSTはありません)。
したがって、n <= 3の要素の場合、D(n)を上記のように定義されたツリーの深さと呼びます。これは、検査によって明確にD(n) < log(n) + 1
(2を底とする対数を意味log
します)、-これは私たちに誘導ベースを与えます。1 = D(2) < log(2) + 1 = 2
1 = D(3)
log(3) + 1
> 2
0 = D(1) < log(1) + 1 = 1
D(k) < log(k) + 1
帰納法による証明を完了するには、すべての場合k < n
、それがそれに続くことを示さなければなりませんD(n) < log(n) + 1
。
nが奇数の場合、明らかに左右のサブツリーには(n-1)/2
それぞれ要素があり、ツリーの深さはサブツリーより1大きくなります。しかし、その後D(n) = 1 + D((n-1)/2) < 1 + 1 + log((n-1)/2)
(誘導仮説によって)= 1 + log(n-1)
(以来log((n-1)/2) = log(n-1) - 1
)、したがってフォルティオリ< 1 + log(n)
、QED。
もしそうなら、あなたは「フォルティオリ」仕上げの代わりに、そしてなしn
で同じステップをたどります、そして証明はまだ成り立ちます。log(n)
log(n-1)
平衡二分木が完全である場合、左右のサブツリーの要素数は(n-1)/ 2になる可能性がありますが、完全でない場合、要素数は(n-1)/2である必要はありません。最後のレベルには異なる要素が含まれる場合があります