📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 6 月 – III |问题 3(1)

📅  最后修改于: 2023-12-03 15:10:14.918000             🧑  作者: Mango

UGC NET CS 2015 年 6 月 – III |问题 3

这是一道涉及数据结构的题目,需要用程序实现。

题目描述

给定一颗二叉树,求该树中所有从根节点到叶子节点的路径之和。

问题分析

这是一道二叉树上的问题,需要遍历每一个从根节点到叶子节点的路径,并将其路径上的所有节点的值加起来,最后求和。因此我们可以考虑使用递归的方法来实现该算法。

具体来说,假设当前节点为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
总结

本题的难点在于如何在递归的过程中正确地统计答案。需要注意的是,在递归到叶子节点的时候,需要将节点本身的值返回,并且在最终计算的时候加上根节点的值。同时,应该考虑到输入数据可能为空的情况,需要进行判空处理。