Python递归返回

Python递归返回,python,recursion,binary-search-tree,red-black-tree,Python,Recursion,Binary Search Tree,Red Black Tree,我正在做一个方法来检查二叉搜索树(BST)是否是红黑树 def isRedBlack(tree,index): if(tree[0][1]=='red'): return False elif(tree[index][0]=='EMPTY' and tree[index][1]=='red'): return False elif(tree[index][1]=='red'):

我正在做一个方法来检查二叉搜索树(BST)是否是红黑树

def isRedBlack(tree,index):
        if(tree[0][1]=='red'):
            return False
        elif(tree[index][0]=='EMPTY' and tree[index][1]=='red'):
            return False
        elif(tree[index][1]=='red'):
            if(tree[2*index+1][1]!='black' or tree[2*index+2][1]!='black'):
                print("PROBLEM HERE")
                return False
        else:            
            if(2*index+1<len(tree)):
                isRedBlack(tree,2*index+1)
            if(2*index+2<len(tree)):
                isRedBlack(tree,2*index+2)
            return True

redBlack = [(3,'black'),(8,'red'),(8,'red'),('EMPTY','black'),('EMPTY','black'),('EMPTY','black'),('EMPTY','red')]

print("IS READBLACK: ",isRedBlack(redBlack,0))
def isRedBlack(树,索引):
如果(树[0][1]=“红色”):
返回错误
elif(tree[index][0]=“EMPTY”和tree[index][1]=“red”):
返回错误
elif(树[索引][1]=“红色”):
如果(树[2*index+1][1]!='black'或树[2*index+2][1]!='black'):
打印(“此处有问题”)
返回错误
其他:

如果(2*index+1)您需要
返回isRedBlack(tree,2*index+1)
返回isRedBlack(tree,2*index+2)
我以前尝试过,但它返回的不是是,当树的根是黑色时,它通过并输入该elif,我现在正在运行它,它在elif中输入if条件,并打印“这里的问题”但是由于某些原因,False没有被返回,而是返回我在Elseb末尾放置的任何内容,因为您没有返回调用,并且您的逻辑存在问题。使用返回设置它,您将看到当
index=1
时,我们输入
elif(tree[index][1]='red')
,但返回
None
,因为
(tree[2*index+1][1]!='black'或tree[2*index+2][1]!='black')
是不真实的。@DanielRodríguez对不起,我错了。我正在尝试自己的测试用例,但没有反映出来。