Python Recusrive方法返回NoneType

时间:2015-10-27 20:39:48

标签: python recursion methods

所以,(这是关于搜索方法),该方法是递归的,但是当我尝试返回我的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)

1 个答案:

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