Python递归返回

时间:2017-05-01 15:10:36

标签: 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'):
            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。

0 个答案:

没有答案