获得BST的下一个最高价值

时间:2015-11-11 11:45:41

标签: python binary-search-tree

我编写了一个函数来获取二叉搜索树中的下一个最高值,如果输入值是树中最高值,则返回0:

def getNext(root, x):
if x > root.d:
    if root.r == None:
        return 0
    else:
        if x > root.r.d:
            getNext(root.r, x)
        else:
            temp = root.r

            while temp.l != None:
                temp = temp.l

            return temp.d
else:
    if root.l == None:
        return root.d
    elif x < root.l.d:
        getNext(root.l, x)
    else:
        temp = Node('')
        temp = root.l.r #53

        if temp.d > x:
            getNext(temp, x)
        else:
            while temp != None:
                if temp.r == None:
                    return root.d
                elif x > temp.r.d:
                    temp = temp.r
                else:
                    getNext(temp.r, x)
                    break

但它只返回None

我尝试在返回之前添加打印件,并且打印实际上正确输出

1 个答案:

答案 0 :(得分:1)

在每次递归调用之前添加return,即

return getNext(root.r,x)

return getNext(root.l,x)

return getNext(temp,x)

return getNext(temp.r,x)