Understand the maximum number of elements in a subtree happens for the left subtree of a tree that has the last level half full.Draw this on a piece of paper to realize this.
それが明確になると、2N / 3の境界を簡単に取得できます。
ツリー内のノードの総数がNであると仮定します。
ツリー内のノード数= 1 +(左サブツリー内のノード数)+(右サブツリー内のノード数)
ツリーの最後のレベルが半分満たされている場合、iFでは、右側のサブツリーの高さがhであり、左側のサブツリーの高さが(h + 1)であると想定しています。
左サブツリーのノード数= 1 + 2 + 4 + 8 .... 2 ^(h + 1)= 2 ^(h + 2)-1 .....(i)
右サブツリーのノード数= 1 + 2 + 4 + 8 .... 2 ^(h)= 2 ^(h + 1)-1 .....(ii)
したがって、プラグイン:
ツリー内のノード数= 1 +(左サブツリー内のノード数)+(右サブツリー内のノード数)
=> N = 1 + (2^(h+2)-1) + (2^(h+1)-1)
=> N = 1 + 3*(2^(h+1)) - 2
=> N = 3*(2^(h+1)) -1
=> 2^(h+1) = (N + 1)/3
この値を式(i)に代入すると、次のようになります。
Number of nodes in Left Subtree = 2^(h+2)-1 = 2*(N+1)/3 -1 =(2N-1)/3 < (2N/3)
したがって、Nノードのツリーのサブツリー内のノードの最大数の上限は2N / 3です。