임의의 분기 요인이있는 트리에서 노드를 찾는 데 문제가 있습니다. 각 노드는 데이터를 전달하며 0 이상의 자식을가집니다. 검색 방법은 Node 클래스 내에 있으며 은 노드가 데이터를 전달하는지 확인한 다음 해당 노드의 모든 자식을 검사합니다. 나는 재귀 적 방법으로 무한 루프로 끝나고있다.트리에서 노드 찾기
def find(self, x):
_level = [self]
_nextlevel = []
if _level == []:
return None
else:
for node in _level:
if node.data is x:
return node
_nextlevel += node.children
_level = _nextlevel
return self.find(x) + _level
find 메소드는 Node 클래스에 있으며 데이터 x가 메소드가 호출 된 노드에 있는지 검사 한 다음 해당 노드 children을 모두 검사합니다. 나는 무한 루프를 계속하고 있으며,이 시점에서 정말로 통찰력을 얻었습니다.
하지만, 내가 self.find (X) + _level을 반환하는 경우, 다음 반복이 _level = [이전 노드의 아이]로 시작합니다, 그래서 [자기]가 라인 오원 '하지 않습니다 항상 거짓이 아닙니다. – user2650946
아마도이 문제는 코드에서'_level'을 사용하고 있으며'self._level'을 사용하여 일을하고자하는 것일 수도 있습니다. 전자는 그 메소드 호출에 대해 국지적 인 변수를 설정하고, 메소드가 재귀 적으로 자신을 호출 할 때 존재하지 않으며, 후자는 객체에 값을 설정하고 유지합니다. 그러나 변경을해도 함수의 첫 번째 줄은'_level = [self]'이므로 사용하기 전에 무엇이든 덮어 쓰게됩니다. –