ノード(およびルート)がint値を保持するバイナリツリーがあり、その葉には価格を表す値が含まれています。ノードの int vals は、計算で取得できるサブツリーのリーフ数を表します。このツリーから得られる価格の最大の合計はいくらかを言わなければなりません。
最初は、リンクリスト内のすべてのリーフを取得してから、親の値でフィルタリングを開始することを考えましたが、最善の解決策ではないようです。
何か案は?!
ノード(およびルート)がint値を保持するバイナリツリーがあり、その葉には価格を表す値が含まれています。ノードの int vals は、計算で取得できるサブツリーのリーフ数を表します。このツリーから得られる価格の最大の合計はいくらかを言わなければなりません。
最初は、リンクリスト内のすべてのリーフを取得してから、親の値でフィルタリングを開始することを考えましたが、最善の解決策ではないようです。
何か案は?!
int numberOfLeaves( Node n ){
int intVal = 0;
if( n.Left != null ){ intVal += numberOfLeaves(n.Left); }
if( n.Right != null ){ intVal += numberOfLeaves(n.Right); }
if( n.Left == null && n.Right == null ){ return 1; }
return intVal;
}
最大の合計については、「最大の合計」を正しく理解していれば、すべての葉をリストにプッシュし、すべての正の価格を合計します。