0
学業として、私は与えられた配列からバイナリ検索ツリーを構築し、その上にいくつかの関数を作成しなければなりません。 またはFalse
のいずれかが返されるにもかかわらず、search()
関数が機能せず、理由がわからない、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
かもしれないあなたは、おそらく私が試した木 –
の訪問変数プロパティを作成する必要がありますが、私は方法がわからないので、私は 'にそれにそれをグローバル –
移動をしました他のもののように__init__' –