학업으로, 주어진 배열에서 이진 검색 트리를 만들고 그 위에 몇 가지 기능을 만들어야합니다. search()
함수가 작동하지 않고 이유를 모르겠다. True
또는 False
중 하나가 반환 되더라도 None
을 계속 반환합니다. 함수를 작성하는 코드에 오류가있을 수 있지만 업로드 시스템은 트리를 성공적으로 작성합니다.왜 검색 함수가 없음을 반환합니까?
visited = 0
class Node:
def __init__(self, value):
self.left = None
self.right = None
self.data = value
class BinarySearchTree:
def __init__(self):
self.root = None
def insert(self, value):
if self.root is None:
self.root = Node(value)
else:
self._insert(value, self.root)
def _insert(self, value, curNode):
if value < curNode.data:
if curNode.left is None:
curNode.left = Node(value)
else:
self._insert(value, curNode.left)
else:
if curNode.right is None:
curNode.right = Node(value)
else:
self._insert(value, curNode.right)
def fromArray(self, array):
for i in range(len(array) - 1):
value = array[i]
self.insert(value)
i += 1
def search(self, value):
global visited
if self.root.data is None:
visited += 1
return False
else:
return self._search(value, self.root)
def _search(self, value, curNode):
global visited
if value == curNode.data:
visited += 1
return True
elif value < curNode.data and curNode.left is not None:
self._search(value, curNode.left)
elif value > curNode.data and curNode.right is not None:
self._search(value, curNode.right)
else:
return False
def min(self):
global visited
curNode = self.root
while curNode.left is not None:
visited += 1
curNode = curNode.left
return curNode
def max(self):
global visited
curNode = self.root
while curNode.right is not None:
visited += 1
curNode = curNode.right
return curNode
def visitedNodes(self):
return visited
당신은 아마 방문 변수 I 시도 트리 –
의 속성해야 할 수도 있지만, 어떻게 모르겠어요, 그래서로를 글로벌 –
이동을 만든' 다른 것들처럼 __init__' –