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
이 내가 현재 이송 기능이 아닌 다른 구현을 사용해야 과제에 대해 인정 하듯이 있습니다 :
다음은 관련 코드입니다. 그것은 주로 내 문제이지만, 전역을 사용하거나 트래버스 (traverse)를 수정하지 않고이를 수행 할 방법이 없기 때문에.
미리 도움을 청하십시오.
그럼에도 불구하고 나는 기대했던 것만 큼 우아하지는 않지만 그럼에도 불구하고 훌륭한 해결책입니다. 감사! – Grav