用 Python 编写程序检查除叶子节点外的每个节点值是否为其子节点值的总和
pythonserver side programmingprogramming更新于 2026/2/4 6:36:17
假设我们有一棵二叉树,我们必须检查树中除叶子节点外的每个节点的值是否与其左子节点值和右子节点值的总和相同。
因此,如果输入如下

则输出将为 True
为了解决这个问题,我们将遵循以下步骤 −
定义一个函数 dfs() 。这将使根节点生根。
如果根节点为空,则
返回 True
如果根节点的左侧为空且根节点的右侧为空,则
返回 True
left := 0
如果根节点的左侧不为空,则
left := 根节点左侧的值
right := 0
如果根节点的右侧不为空,则
right := 根节点右侧的值root
当 (left + right 与 root 的值相同) 且 dfs(left of root) 为 true 且 dfs(right of root) 为 true 时返回 true
从 main 方法执行以下操作 −
返回 dfs(root)
让我们看看下面的实现以便更好地理解 −
示例
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def solve(self, root): def dfs(root): if root == None: return True if root.left == None and root.right == None: return True left = 0 if root.left: left = root.left.val right = 0 if root.right: right = root.right.val return (left + right == root.val) and dfs(root.left) and dfs(root.right) return dfs(root) ob = Solution() root = TreeNode(18) root.left = TreeNode(8) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) print(ob.solve(root))
输入
root = TreeNode(18) root.left = TreeNode(8) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5)
输出
True
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

