Leetcode今日の1つの質問2020.11.11質問222:完全な二分木のノードの数

222.完全な二分木のノード数

タイトル説明

ここに画像の説明を挿入
ここに画像の説明を挿入

知識のポイント:

完全な二分木

完全な二分木では、各層のノード数は最大に達しますが、最下位のノードが埋められない場合があり、最下位の層のノードは層の左端の位置に集中します。最下層がh番目の層である場合、この層には1〜2 ^ hのノードが含まれます。

二分探索

二分探索法は、順序付けられた配列内の特定の要素を見つけるための検索アルゴリズムです。検索プロセスは、配列の中央の要素から開始します。中央の要素が検索対象の要素である場合、検索プロセスは終了します。特定の要素が中央の要素よりも大きいか小さい場合は、半分で検索します。中央の要素よりも大きいまたは小さい配列を作成し、最初と同じように中央の要素から比較を開始します。特定のステップで配列が空の場合は、配列が見つからないことを意味します。この検索アルゴリズムは、比較するたびに検索範囲を半分に減らします。

アイデア、アルゴリズム、コードの実装

方法1:最も簡単な解決策は、再帰を使用してノードを1つずつ計算することです。
ここに画像の説明を挿入
方法2:二分探索
方法1は、完全な二分木の特性を使用しません。完全な二分木では、最後のレベルを除いて、各レベルのノードは遅く、最後のレベルの
ノードすべて左側にあります。
これは、k番目のレイヤーが最後のレイヤーでない場合、k番目のレイヤーに2 ^ k個のノードがあることを意味します。最後のレイヤーが完全に埋められていない可能性があるため、ノードの数は
1〜2のd乗になります。ここで、dはツリーの高さを表します。その場合、最後のレベルを除くツリー内のすべてのノードの数は(2のd-1の累乗)です。次に、二分
探索法を使用して、最後のレイヤーにidxノードが存在するかどうかを確認します(
idx = 4)。idxは0,1,2,3,4,5,6,7の後半にあるため、最初のステップは右に移動することです。idxは次に4,5,6,7の前半、後半に配置されます。
ステップは左に移動です。idxは4,5の前半にあるので、次のステップは左に移動することです。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_51210480/article/details/109736178