せっかちな学生が直接、私たちは完全な記事を閲覧することができます興味を持っているという結論を確認するために下を引くことができます
ノードを計算すると、いずれかの二分木のリーフノードの数又は1又は2の範囲内のノードの数を求めて、実質的に完全な二分木の種類です。
実際には、これらの問題は、問題解決の方法を根本的に11種類は基本的に同じです。
記載されている最初のタイトル:
1000のノードとの完全なバイナリツリーは、この完全なバイナリツリーは、2のノード数ですか?
完全なバイナリツリー699のノード、リーフノード何?
30は完全なバイナリツリーノード、次数1の全体のバイナリツリーノードの数が知られていますか?
このような問題と同様に、実際には、式が解決されている使用します。式を解析するための最初:
我々は、N個のノードとの完全なバイナリツリーは、ノードが0(リーフノード)N0、N1に次数1のノードがあると仮定し、次数2のノードがN2です。
私たちは、式を取得することができます:
N = N0 + N1 + N2
完全二分木総度は、すべてのノード式IIのために得ることができます。
总度数 = 0*N0 + 1*N1 + 2*N2
度実際の総数は、我々は、ルートノードに加えて、各ノードは、ヘッド端部を有し、バイナリツリーエッジの数として理解することができます。
だから我々は、式IIIを得ることができます:
总度数 = N - 1
式の合併は、式IVことができます。
N0 = N2 + 1
これらの問題は、リーフノードの数を解決する、次数2のノードの数も出解決(およびその逆)になるように
そして、N1、それ?
実際には、完全なバイナリツリーの定義に精通しているが知っておくべき、中等度の完全なバイナリツリーノード1は0または1になります。
なぜ?
完全なバイナリツリー解析から理解することができない、唯一の完全なバイナリツリーのリーフノードと次数2のノード、
完全なバイナリツリーは、左側の複数の連続切断する右から完全なバイナリツリーノードの最後のレベルとして見ることができます
あなたはノード数が奇数のカット場合は、適度な完全なバイナリ1は、ノード数が1であります
ノードの数が偶数遮断される場合、そう適度完全なバイナリツリーノード1の数が0であります
私たちは、一番下に見ていない完全なバイナリツリーを分析していき、トップは実際には完全なバイナリツリーです。
完全なバイナリツリーと上記-k層ならば、我々は式に従って、ノードの数は、完全なバイナリツリー(2 ^ K)-1、(2 ^ k)は-1、奇数でなければなりません。
総ノード数Nであっても、最後の層は、ノードの数である必要があり、次いでN1 = 1、奇数の場合の完全なバイナリツリー
N1 = 1
公式一:N = N0 + N1 + N2
公式四:N0 = N2 + 1
代入可以得到 N2 = N/2 - 1
総ノード数N奇数ならば、最後の層は、ノード数でなければならない私たちの完全なバイナリツリーは、さえN1 = 0であります
N1 = 0
公式一:N = N0 + N1 + N2
公式四:N0 = N2 + 1
代入可以得到 N2 = (N - 1)/2
要約すると:
ノード数にして私たちのパリティ
ノードの奇数、ノード完全二分木が適度0度では、ノードの数は2(N-1)/ 2です。
ノードの偶数、中程度の完全なバイナリツリーのノードが1である、次数2のノードの数がN / 2 - 1。
実際には、最初に奇数とても良い思い出、 - 2で割った偶数と2で割ったが、マイナスにも指示します。
しかし、我々は直接ノードの数として計算されないことに注意してください2
最後に、N0 = N2 + 1、求めてN2によると、リーフノードの数は一つだけが知ることができます追加する必要があります。