我正在尝试检查二进制搜索树(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。