Python 二叉树:如何将每个叶值更改为它的路径之和

Python 二叉树:如何将每个叶值更改为它的路径之和,python,Python,我试图将叶子的值更改为指向它们的路径的总和(不返回任何内容)。 我尝试使用递归,但是我不确定应该在代码中的哪一点调用set函数,以及如何确保它只改变叶子。这就是我迄今为止所尝试的: class Node: def __init__(self, value, left=None, right=None): self.__value = value self.__left = left self.__right = right de

我试图将叶子的值更改为指向它们的路径的总和(不返回任何内容)。 我尝试使用递归,但是我不确定应该在代码中的哪一点调用set函数,以及如何确保它只改变叶子。这就是我迄今为止所尝试的:

class Node:

    def __init__(self, value, left=None, right=None):
        self.__value = value
        self.__left = left
        self.__right = right

    def get_left(self):
        return self.__left

    def get_right(self):
        return self.__right

    def get_value(self):
        return self.__value

    def set_value(self, value):
        self.__value = value


def sum_to_leaves(node):
    if node is None:
        return
    new_value = node.get_value() + sum_to_leaves(node.get_left()) + sum_to_leaves(node.get_right())
    if node.get_left() is None and node.get_right() is None:
        node.set_value(new_value)
        return


向下计算路径和,将其作为参数传递

def sum_to_leaves(node, path_sum=0):
    if node:
        path_sum += node.get_value()
        sum_to_leaves(node.get_left(), path_sum)
        sum_to_leaves(node.get_right(), path_sum) 
        if node.get_left() is node.get_right():
            node.set_value(path_sum)