📌  相关文章
📜  二叉树中所有节点的总和(1)

📅  最后修改于: 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

以上就是计算二叉树中所有节点的总和的介绍。