1
我有一個充滿對象的二叉搜索樹。我使用回調函數遍歷樹,該函數將所有對象的屬性添加到全局變量中。我有這個工作,但我想找到一種方法來實現這一點,而不使用全局。使用回調函數來查找bst中的值的總和(沒有全局)
下面是相關代碼:
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
這是無可否認的轉讓,這就要求我使用當前的橫移功能,而不是不同的實現。這主要是我的問題,但因爲我沒有看到不使用全局或修改遍歷()的方法。
在此先感謝您的幫助。
不像我期望的那麼優雅,但是卻是一個很好的解決方案。謝謝! – Grav