問題代碼(二叉樹的搜索):
def contains(self, value: object) -> bool:
# if the tree is empty
if self.root is None:
return False
else:
if value == self.root.value:
return True
elif value < self.root.value:
if self.root.left is None:
return False
subtree = BST()
subtree.root = self.root.left
subtree.contains(value)
else:
if self.root.right is None:
return False
subtree = BST()
subtree.root = self.root.right
subtree.contains(value)
main:
tree = BST([10, 5, 15])
print(tree.contains(15))
print(tree.contains(-10))
print(tree.contains(15))
debug看不出問題窜锯,return一切正常张肾,但是輸出結(jié)果為
None
None
None
問題:遞歸的返回值無法傳遞出外層函數(shù)
解決辦法:遞歸調(diào)用的時候就要套上return
完整代碼如下:
def contains(self, value: object) -> bool:
# if the tree is empty
if self.root is None:
return False
else:
if value == self.root.value:
return True
elif value < self.root.value:
if self.root.left is None:
return False
subtree = BST()
subtree.root = self.root.left
return(subtree.contains(value))
else:
if self.root.right is None:
return False
subtree = BST()
subtree.root = self.root.right
return(subtree.contains(value))