バイナリツリーの最大レベル和


問題文:
バイナリツリーのルートを考えると、そのルートのレベルは1、その子のレベルは2です.
レベルxのノードのすべての値の合計が最大であるように、最も小さいレベルxを返してください.
アプローチ
これはいくつかの非常に興味深い解決を持っていた問題だった.このアプローチではBFSを使用しました.私は一度に1つの行を取ったその合計を発見し、以前の合計と比較した.前のものより大きいならば、私は最大レベルを現在のレベルと入れ替えました.最後にループの終わりに私は最大レベルを返しました.
アルゴ画像


コード
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def maxLevelSum(self, root: TreeNode) -> int:
        if root == None: return None

        currentLevel: int = 1
        maxLevel: int = None
        maxSum: int = None

        BFSQueue: list[TreeNode] = [root]

        while len(BFSQueue) > 0:
            currentLength: int = len(BFSQueue)
            currentSum: int = 0

            for i in range(currentLength):
                currentNode: TreeNode = BFSQueue.pop(0)
                currentSum += currentNode.val

                if currentNode.left != None: BFSQueue.append(currentNode.left)
                if currentNode.right != None: BFSQueue.append(currentNode.right)

            if (maxSum == None) or (maxSum < currentSum):
                maxSum = currentSum
                maxLevel = currentLevel

            currentLevel += 1

        return maxLevel
結果イメージ

あなたがこのポストから何かを学ばなければならないならば、あなたはポストが好きであることを確認して、より多くのそのような内容のために以下のボタンをクリックします.
また、いくつかの提案がある場合は、以下のコメントを確認してください.