gpt4 book ai didi

python - 使用回调函数查找 bst 中的值之和(没有全局)

转载 作者:太空宇宙 更新时间:2023-11-03 15:54:20 25 4
gpt4 key购买 nike

我有一个充满对象的二叉搜索树。我使用回调函数遍历树,该回调函数将所有对象的属性添加到全局变量。我已经完成了这个工作,但我想找到一种不使用全局变量来完成此任务的方法。

相关代码如下:

TOTAL_AGE = 0.0

class Node(object):
def __init__(self, data):
self.left = None
self.right = None
self.data = data


class Tree(object):
def __init__(self):
self.root = None
self.size = 0

def traverse(self, callback):
self._traverse(callback, self.root)

def _traverse(self, callback, node):
if node is None:
return
self._traverse(callback, node.left)
callback(node.data)
self._traverse(callback, node.right)


def add_ages(tree):
tree.traverse(callback)


def callback(student):
global TOTAL_AGE
TOTAL_AGE += student.age


def main():
tree = bst.Tree()
add_ages(tree)
print TOTAL_AGE

这无疑是一个作业,它要求我使用当前的遍历函数而不是不同的实现。这主要是我的问题,因为我没有找到一种方法可以在不使用全局或修改 traverse() 的情况下做到这一点。

预先感谢您的帮助。

最佳答案

您可以将类实例的方法作为回调传递,以便您可以跟踪实例中的状态:

class Count(object):
def __init__(self):
self.total_age = 0
def callback(self, student):
self.total_age += student.age

然后实例化 Count 并将其 callback 方法传递给 Tree:

count = Count()
tree.traverse(count.callback)

关于python - 使用回调函数查找 bst 中的值之和(没有全局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40941373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com