Python递归返回
我正在做一个方法来检查二叉搜索树(BST)是否是红黑树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'):
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对不起,我错了。我正在尝试自己的测试用例,但没有反映出来。