📅  最后修改于: 2023-12-03 15:06:19.875000             🧑  作者: Mango
在计算二叉树中所有节点的总和时,需要遍历整个二叉树。
二叉树节点的数据结构通常有两个属性:左子树和右子树。因此,我们可以采用递归的方式遍历整个二叉树,先计算左子树的总和,再计算右子树的总和,最后将它们相加。
下面是一个简单示例:
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class Solution:
def sumOfNodes(self, root: TreeNode) -> int:
if not root:
return 0
return root.val + self.sumOfNodes(root.left) + self.sumOfNodes(root.right)
在这个示例中,我们定义了一个 TreeNode
类来表示二叉树节点。每个节点都有一个整数值 val
和左,右子树。我们定义了一个 Solution
类,其中包含一个函数 sumOfNodes
来计算二叉树中所有节点的总和。
首先,我们检查根节点是否为空。如果是,就返回 0。然后,我们递归地计算左子树和右子树的总和。最后,将它们相加并返回结果。
这个函数可以用来计算二叉树中所有节点的总和。可以用以下代码测试这个函数:
# 构造一个二叉树
"""
1
/ \
2 3
/ \ / \
4 5 6 7
"""
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
solution = Solution()
print(solution.sumOfNodes(root)) # 输出: 28
以上就是计算二叉树中所有节点的总和的介绍。