📅  最后修改于: 2023-12-03 15:41:16.389000             🧑  作者: Mango
在二叉树中,叶节点是指没有任何子节点的节点。现在我们要求给定二叉树所有层级叶节点的最大和。
我们可以使用递归的方式来实现这个功能。我们可以定义一个函数,该函数的返回值是给定二叉树中所有层级叶节点的最大和。我们首先需要找到二叉树的所有叶节点,然后计算它们的和并返回。我们可以使用一个队列来辅助遍历二叉树。在遍历二叉树的过程中,我们遇到一个节点时,如果这个节点是叶节点,我们就将其放入队列中。当我们遍历完所有节点后,队列中存储的就是所有叶节点了。此时,我们可以遍历这个队列,并计算所有叶节点的和。最后返回这个和即可。
以下是用 Python 语言实现该功能的代码:
from queue import Queue
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def sumOfLeftLeaves(root: TreeNode) -> int:
if not root:
return 0
queue = Queue()
queue.put(root)
leavesSum = 0
while not queue.empty():
node = queue.get()
if node.left:
if not node.left.left and not node.left.right:
leavesSum += node.left.value
else:
queue.put(node.left)
if node.right:
if node.right.left or node.right.right:
queue.put(node.right)
return leavesSum
该算法的时间复杂度为 $O(n)$,其中 $n$ 是二叉树中节点的个数。我们需要遍历整个二叉树,并使用队列辅助遍历,所以时间复杂度是 $O(n)$。空间复杂度也是 $O(n)$,因为我们需要使用一个队列来存储二叉树中的节点。