所以,(这是关于搜索方法),该方法是递归的,但是当我尝试返回我的self.key和self.value时,函数返回一个NoneType,我该如何解决这个问题?
(课程还有更多内容,但这是相关部分,代码的其他部分对此部分没有影响)
我已经看到了其他解决方案,你必须返回整个方法(在我的情况下,这将是:返回搜索(自我,键))但那些只是给我一个无限循环
class BinairySearchTree:
def __init__(self, key=None, value=None, lefttree=None, righttree=None):
self.key = key
self.value = value
self.lefttree = lefttree
self.righttree = righttree
def insert(self, key, value):
if self.key != None:
if key > self.key:
if self.righttree != None:
self.righttree.insert(key, value)
else:
self.righttree = BinaireZoekBoom(key, value)
elif key == self.key:
self.key = key
self.value = value
elif key < self.key:
if self.lefttree != None:
self.lefttree.insert(key, value)
else:
self.lefttree = BinaireZoekBoom(key, value)
elif self.key == None:
self.key = key
self.value = value
def search(self, key):
if key > self.key:
self.righttree.search(key)
elif key == self.key:
return self.key, self.value
elif key < self.key:
self.lefttree.search(key)
答案 0 :(得分:0)
我想我刚刚看到了这个问题:你的搜索功能没有将找到的节点传播到树上。您必须在每个级别返回一个值,以将结果返回给原始调用者。
def search(self, key):
if key > self.key:
return self.righttree.search(key)
elif key == self.key:
return self.key, self.value
elif key < self.key:
return self.lefttree.search(key)