2017-02-26 17 views
2

バイナリツリーの最小レベルのすべてのリーフノードの合計を計算する方法。ツリーが存在しない場合は-1を返します。バイナリツリーの最小レベルのすべてのリーフノードの合計

例:上記バイナリツリーの

Binary Tree

、(40 + 60)100を返す

(画像出典:GeeksForGeeks

+1

あなたの質問は?...あなたのコードを表示してください、問題を教えてください。 – avysk

答えて

4
f(node, level): 
    if node is null then 
     return { Inf, -1 } 
    if isLeaf(node) then 
     return { level, node.value } 
    fleft <- f(node.left, level + 1) 
    fright <- f(node.right, level + 1) 
    fnode <- { min(fleft.first, fright.first), 0 } 
    if fnode.first = fleft.first then 
     fnode.second <- fnode.second + fleft.second 
    if fnode.first = fright.first then 
     fnode.second <- fnode.second + fright.second 
    return fnode 

関数ペアを返しますここで、firstが最小リーフレベルであり、secondがこのレベルのリーフ要素の合計です。

関連する問題