Python递归返回

2024-05-08 18:40:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个方法来检查二叉搜索树(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))

问题是,代码进入条件时,它的红色但它的一个子元素不是黑色的,因此它应该返回False,但不是返回False,而是继续递归直到结束并返回True。你知道吗


Tags: 方法falsetruetreeindexlenreturnif