2012-01-28 7 views
-1

こんにちは私は以下の問題があります。木を考えると、ルートとノードよりも高い値を持つノードの数をチェックできるようにしたいと考えています。つまり、ノードの値が11の場合は、ルートとその上にあるすべてのノードよりも高い(または等しい)限り、カウンタを増やす必要があります(したがって、ルートまでのすべての値は11以下にする必要があります)。どのように最高の達成するために?ルートより高い値のバイナリツリーノードの数を確認する

+0

[何を試しましたか?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

はこの宿題ですか?ちょうど右に直進+ 1! – Gevorg

+0

あなたのツリーはこの質問に答えるために具体的に構成されていますか?すなわち、それは左のノードが親ノード以下であり、右のノードが親ノードより大きいバイナリツリーですか?もしそうなら、それはかなりシンプルにすべきです。そうでなければ、なぜ最初に木を使用しているのか分かりません。おそらく文脈情報をもう少し聞いてみると、あなたの問題に対する有益な答えが得られます。 –

答えて

1

breadth firstツリートラバーサルを行いますありがとうございました。各レベルの終わりに、カウンタ値を作るために使用されるハッシュテーブルにノード値(そのレベルのみ)を追加します。

    2 
      /  \ 
      1   3 
     / \  / \ 
     11  12 4  5 

プレイアウト:LVLに

ハッシュテーブルは= {}

  1. 訪問すべてのノード。 1
  2. val = 2.ルートよりも大きく、すべて(hashTable)?はい。 Incr。カウンタ。 hashTableにすべてを追加します。次のlvlに進む。

ハッシュテーブル= {2}

  1. ヴァル=ルート1より大きく、すべての(ハッシュテーブル)?いいえ、訪問先
  2. val = 3. rootよりも大きく、すべて(hashTable)?はい。 Incr。カウンタ。 hashTableにすべてを追加します。次のlvlに進む。

ハッシュテーブル= {2、1、3}

。 。 。

count = 6個以上のノードは、それらの上のすべてのノード以上です。

+0

ありがとう – aretai

関連する問題