📅  最后修改于: 2023-12-03 15:39:55.637000             🧑  作者: Mango
本题为 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_sum
和 right_sum
分别处理左右子节点的值,并将其加到当前节点的值上。
最后,我们直接返回根节点即可。