2016-10-20 2 views
-3

赤い黒のツリーの赤いノードの割合を調べるにはどうすればよいですか?私は赤黒の木の特性に精通していますが、これに近づく方法について私の頭を包んでいるようには見えません。私が持っているアイデアの1つは、ツリーを構築して赤いノードを数えた後に単純にツリーをたどることですが、大きな入力に対しては効率が悪いようです。赤黒の木の赤いノードの割合

+1

申し訳ありません、StackOverflowは、コード作成や基本的なチュートリアルサービスではありません。このサイトを効果的に使用する方法については、[help]にアクセスして[ask]をお読みください。 –

+2

あなたはツリーを構築せずにこれを解決するか、最初に赤黒のツリーを実装して、実装を使って調べることになっていますか? – molbdnilo

+0

@molbdnilo私は最初に赤黒の木に実装するはずです。私が赤いノードの割合を計算すると考えていた1つの方法は、ツリーを横切って赤いノードの数を数えることですが、それは大規模な値の場合には非効率的です... – ProgrammingNoob

答えて

1

さて、あなたは宇宙の時間を交換することができます...

あなたは、各サブツリー内の赤と黒のノード数を保存する場合は、rootだけを見て、これを決定することができます。

これはノードに保存する情報で、ノードの子(および親の可能性もあるが、私のメモリは少し濁っている)を見るだけで更新することができ、複雑さには影響しませんツリー操作の
あなたのツリー構築は遅くなりますが、一定の要因によってのみです。

この係数が実際にはどれくらいの時間を節約できるかどうかは、このパーセンテージを決定する必要がある場合にのみ、1回は別の問題です。

関連する問題