バイナリツリーの最大レベル和
1993 ワード
問題文:
バイナリツリーのルートを考えると、そのルートのレベルは1、その子のレベルは2です.
レベルxのノードのすべての値の合計が最大であるように、最も小さいレベルxを返してください.
アプローチ
これはいくつかの非常に興味深い解決を持っていた問題だった.このアプローチではBFSを使用しました.私は一度に1つの行を取ったその合計を発見し、以前の合計と比較した.前のものより大きいならば、私は最大レベルを現在のレベルと入れ替えました.最後にループの終わりに私は最大レベルを返しました.
アルゴ画像
コード
あなたがこのポストから何かを学ばなければならないならば、あなたはポストが好きであることを確認して、より多くのそのような内容のために以下のボタンをクリックします.
また、いくつかの提案がある場合は、以下のコメントを確認してください.
バイナリツリーのルートを考えると、そのルートのレベルは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
結果イメージあなたがこのポストから何かを学ばなければならないならば、あなたはポストが好きであることを確認して、より多くのそのような内容のために以下のボタンをクリックします.
また、いくつかの提案がある場合は、以下のコメントを確認してください.
Reference
この問題について(バイナリツリーの最大レベル和), 我々は、より多くの情報をここで見つけました https://dev.to/ankan_2025/max-level-sum-of-a-binary-tree-5e64テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol