Python 为什么搜索函数返回None?
作为一项功课,我必须从给定的数组中构建一个二叉搜索树,并在其上生成一些函数。Python 为什么搜索函数返回None?,python,binary-search-tree,Python,Binary Search Tree,作为一项功课,我必须从给定的数组中构建一个二叉搜索树,并在其上生成一些函数。 search()函数不起作用,我不知道为什么,它总是返回None,即使它应该返回True或False。 在构建函数时,我的代码可能有错误,但上传系统写道,它成功地构建了一棵树 visited = 0 class Node: def __init__(self, value): self.left = None self.right = None self.dat
search()
函数不起作用,我不知道为什么,它总是返回None
,即使它应该返回True
或False
。
在构建函数时,我的代码可能有错误,但上传系统写道,它成功地构建了一棵树
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
visted=0
类节点:
定义初始值(自身,值):
self.left=无
self.right=无
self.data=值
类二进制搜索树:
定义初始化(自):
self.root=None
def插入(自身,值):
如果self.root为无:
self.root=节点(值)
其他:
self.\u插入(值,self.root)
def_插入(自身、值、curNode):
如果值curNode.data和curNode.right不是无:
self.\u搜索(值,curNode.right)
其他:
返回错误
def最小值(自身):
全球访问
curNode=self.root
而curNode.left不是无:
访问次数+=1
curNode=curNode.left
返回curNode
def最大值(自身):
全球访问
curNode=self.root
而curNode.right不是无:
访问次数+=1
curNode=curNode.right
返回curNode
def visitedNodes(自身):
回访
检查您的\u search()
功能。在第二个或第三个测试用例中,它都不会返回任何内容。如果在python中没有显式定义返回
,则该方法返回None
解决办法可能是
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:
return self._search(value, curNode.left)
elif value > curNode.data and curNode.right is not None:
return self._search(value, curNode.right)
else:
return False
def_搜索(self、value、curNode):
全球访问
如果值==curNode.data:
访问次数+=1
返回真值
elif值curNode.data和curNode.right不是无:
返回self.\u搜索(值,curNode.right)
其他:
返回错误
检查您的\u search()
功能。在第二个或第三个测试用例中,它都不会返回任何内容。如果在python中没有显式定义返回
,则该方法返回None
解决办法可能是
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:
return self._search(value, curNode.left)
elif value > curNode.data and curNode.right is not None:
return self._search(value, curNode.right)
else:
return False
def_搜索(self、value、curNode):
全球访问
如果值==curNode.data:
访问次数+=1
返回真值
elif值curNode.data和curNode.right不是无:
返回self.\u搜索(值,curNode.right)
其他:
返回错误
您可能应该将访问的变量设置为树的属性I尝试过,但我不知道如何设置,所以我将其设置为全局将其移动到\uuuu init\uuuu
中,就像其他变量一样您可能应该将访问的变量设置为树的属性I尝试过,但我不知道如何设置,所以我把它做成了一个全球性的,把它移动到\uuuu init\uuuu
中,就像另一个一样。是的,就是这样!谢谢你,先生。哦,是的,就是这样!谢谢你,先生。