class WNode(object):
def __init__(self,w):
self._w=w
self._content=[]
def find(self, x):
if self._w is x:
return self
else:
for i in self._content:
return i.find(x)
return None
안녕하세요. x가있는 경우 재귀를 사용하여 tree에 이름 x가있는 노드를 반환하는 메서드 tree.find (self, x)를 만드는 데 문제가 있습니다. 내가 작성한 것은 특정 경우에만 작동하는 것처럼 보이지만 다른 노드에서는 (특히 큰 나무에서는) 노드가있는 경우에도 None을 반환합니다. 누군가가 x 노드를 반환하는 작동 find (self, x) 메서드를 만드는 방법을 알고 있습니까?Python의 트리에서 노드를 찾아서 반환합니다.
@unixer 노드 x를 검색하고 싶습니다. 따라서 self._w (노드 이름)와 같으면 노드 자체를 반환하고 그렇지 않으면 모든 자식 노드에서 반복적으로 x와 같은 self._w를 찾습니다. 하지만 분명히 작동하지 않습니다. – BamLess
삽입 방법과 실패한 테스트 케이스를 추가하십시오. – blaze
@blaze 트리를 만드는 함수를 사용합니다. r = WNode ('1') r._content = [WNode ('2'), WNode ('3')]와 같은 간단한 트리에서도 작동하지 않습니다. >> r.find ('1')을 입력하면 루트 노드를 반환하고 >> r.find ('2')와 동일하게 반환합니다. 그러나 >> r.find ('3')는 '3'노드가 r에있는 경우에도 None을 반환합니다. – BamLess