ノードが0,1または2の子を持つことができるバイナリツリーがあるとします。コスト値は各ノードに関連付けられ、{5,10,20,40}とすることができる。新しいノードの最も最適な配置は、同じまたはより低いコスト値を有するノードの下にある。例えば、コスト値20の新しいノードは、コスト値20のノードの下に配置するのが最も良いが、コスト値5および10のノードの下に配置することもできる。指定された仕様のバイナリツリー内のノードの最適な位置は何でしょうか?
このアルゴリズムの第1の要件は、コスト値10を有するノードがコスト値10を有する左の子を有する場合、コスト値10を有する新しいノードは、前記ノードの右の子にされる。二次的な要件は、ツリーの全体の深さを最大にすることです。
ツリーはいつでも再配置できません。着信ノードの価値が低い場合、ペナルティは発生しません。 上記の要件を前提として、ツリー内に着信する新しいノードの最適な位置を決定するにはどうすればよいですか?私たちは一般的なアルゴリズムを書くことができますか?
最初は、ツリーの各レベルを最初に完成すると思っていましたが、最適ではないと私は考えています。
問題の説明が不明または不完全E.g。処理される最初のノードが40で、次のノードが5の場合、どうなりますか?罰金はありますか?それとも、ツリーを「解体」して並べ替えることが許されていますか?後者の場合、時間の複雑さに関する要件はありますか? –
は、要求に応じていくつかの詳細を追加 – Backspace