📌  相关文章
📜  教资会网络 | UGC NET CS 2017 年一月至三日 |问题 30(1)

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

教资会网络 | UGC NET CS 2017 年一月至三日 |问题 30

本题为 UGC NET CS 2017 年一月至三日考试第 30 个问题,要求考生在 150 个字内回答。

题目描述

给定一个二叉树,要求将所有节点的值加上其祖先节点的值,对于叶子节点,不需要进行操作。

解法

本题思路比较简单,可以采用递归的方式进行解决。

对于每个节点,我们都可以通过递归的方式将其子节点的值进行加上当前节点的值,然后将其返回。

对于叶子节点,我们无需进行操作,直接返回节点本身即可。

具体的实现可以参考以下代码:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def __init__(self):
        self.total = 0
    
    def sumOfAncestors(self, root: TreeNode) -> TreeNode:
        if not root:
            return None
        self.helper(root)
        return root
    
    def helper(self, node):
        if not node:
            return 0
        left_sum = self.helper(node.left)
        right_sum = self.helper(node.right)
        node.val += left_sum + right_sum
        return node.val

上面的代码中,我们使用了一个 helper 函数,用于递归处理每个节点。

在递归过程中,我们使用 left_sumright_sum 分别处理左右子节点的值,并将其加到当前节点的值上。

最后,我们直接返回根节点即可。

参考资料