我正在尝试将叶子的值更改为它们的路径总和(不返回任何内容)。我尝试使用递归,但是我不确定应该在代码的哪一点调用set函数,以及如何确保它仅更改leaves。这是我到目前为止尝试过的:
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)