二叉树:如何将每个叶子值更改为其路径的总和

问题描述 投票:0回答:1

我正在尝试将叶子的值更改为它们的路径总和(不返回任何内容)。我尝试使用递归,但是我不确定应该在代码的哪一点调用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

python
1个回答
0
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.