我已经在python中实现了不平衡的二叉树,现在想为其寻找一种可以返回True和False的搜索方法。 但是,我现在已经创建了此递归函数,该函数在打印结果方面有效,但仅返回“ None”。
我猜这是因为只有最后一个递归调用才能返回某些内容,而外部的则不会。
我该如何解决?我觉得这应该是微不足道的,让我感到迷茫。
def traverseSearch(self, ID, current):
if current == None: # if we have not found our goal, the current node is null
print("not found")
return False
if current.ID == ID: # succes statement
print("found")
return True
if ID > current.ID: # call recursive on left children if data is bigger
self.traverseSearch(ID, current.rightChild)
if ID < current.ID: # call recursive on Right children if data is bigger
self.traverseSearch(ID, current.leftChild)
现在更改为以下内容,但似乎仍返回nonetype
def traverseSearch(self, ID, current):
if current == None: # if we have not found our goal, the current node is null
print("not found")
return False
if current.ID == ID: # succes statement
print("found")
return True
if ID > current.ID: # call recursive on left children if data is bigger
self.traverseSearch(ID, current.rightChild)
if ID < current.ID: # call recursive on Right children if data is bigger
self.traverseSearch(ID, current.leftChild)
答案 0 :(得分:1)
您的猜测是正确的;您只需要返回递归调用的结果即可。
return self.traverseSearch(ID, current.Child)
别担心;我们都会迷失在某些事后可见的事情上。