📅  最后修改于: 2023-12-03 15:10:14.918000             🧑  作者: Mango
这是一道涉及数据结构的题目,需要用程序实现。
给定一颗二叉树,求该树中所有从根节点到叶子节点的路径之和。
这是一道二叉树上的问题,需要遍历每一个从根节点到叶子节点的路径,并将其路径上的所有节点的值加起来,最后求和。因此我们可以考虑使用递归的方法来实现该算法。
具体来说,假设当前节点为root
,如果该节点为叶子节点,那么它本身的值就是一条从根节点到叶子节点的路径。否则,我们可以递归地对其左右子树进行计算,每次将路径的值都相加起来。最终,所有子树的路径和累加起来就是最终的答案。
下面是使用Python语言实现该算法的代码片段:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def sum_root_to_leaf(root: TreeNode) -> int:
if not root:
return 0
if not root.left and not root.right:
return root.val
sum = 0
if root.left:
sum += sum_root_to_leaf(root.left)
if root.right:
sum += sum_root_to_leaf(root.right)
return sum + root.val
本题的难点在于如何在递归的过程中正确地统计答案。需要注意的是,在递归到叶子节点的时候,需要将节点本身的值返回,并且在最终计算的时候加上根节点的值。同时,应该考虑到输入数据可能为空的情况,需要进行判空处理。