返回语句未执行

时间:2013-04-05 04:02:53

标签: python

嘿伙计,所以我有一个问题,那就是我的返回声明没有执行。 这是我的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语句没有执行

1 个答案:

答案 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