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