【题目】
【代码】

class Solution:
def dfs(self,root,level=0):
if not root:return
if level not in self.level:
self.level[level]=0
self.depth=max(self.depth,level)
self.level[level]+=root.val
self.dfs(root.left,level+1)
self.dfs(root.right,level+1)
def deepestLeavesSum(self, root: Optional[TreeNode]) -> int:
self.level={}
self.depth=-1
self.dfs(root)
return self.level[self.depth]
【方法2】

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def deepestLeavesSum(self, root: Optional[TreeNode]) -> int:
queue=[root]
level=[]
while queue:
sz=len(queue)
s=0
for i in range(sz):
temp=queue.pop(0)
s+=temp.val
if temp.left:
queue.append(temp.left)
if temp.right:
queue.append(temp.right)
level.append(s)
return level[-1]
这篇博客介绍了两种不同的方法来计算二叉树中最深叶子节点的和。第一种方法是通过深度优先搜索(DFS),在遍历过程中维护一个level字典和最大深度,更新每个层级的节点值总和。第二种方法利用广度优先搜索(BFS)实现,通过队列逐层遍历,每次遍历一层时计算该层节点值的总和,并在最后返回最深层级的节点值之和。这两种方法都有效地解决了问题,展示了不同的树形数据结构处理策略。

被折叠的 条评论
为什么被折叠?



