嘿伙计,所以我有一个问题,那就是我的返回声明没有执行。 这是我的sudo代码。它搜索树以查看项目是否在树中。
def search(self, i):
if left child is None and right child is None
if self.data == i:
return True
else:
pass
elif self.data == i:
return True
else:
if left child exists:
return self.left.search(i)
if right child exists:
return self.right.search(i)
代码似乎工作,除了self.data == i
时,代码不运行返回True语句,即使
if语句被执行。有人知道为什么吗?
提前谢谢!
编辑:添加自我参数。它是支持在那里,是一个TYPO ..
我将数字3,8,2和1插入树中,然后搜索1.如果左子项为None且右子项为None,则添加一个print语句:if self.data == i:print(' self.data == i')返回True我在搜索1时添加了print语句,print语句确实打印了,这意味着执行了if语句,但是返回的True语句没有执行
答案 0 :(得分:1)
我想你正在尝试进行二进制搜索,在这种情况下你的代码中存在一些问题。可能由于条件self.data == i
失败而无法执行return语句。另请注意,如果根有一个左子,则原始代码中永远不会查看正确的子项。
这是线性搜索的实现,我将其作为练习将其修改为二进制搜索。
def search(self, i):
if self.data == i:
return True
if self.left is not None:
if self.left.search(i):
return True
if self.right is not None:
return self.right.search(i)
return False