2016-10-27 2 views
0

BinaryTree가 BinarySearchTree인지 확인하는 프로그램을 작성하려고합니다. 이것은 내가 지금까지 가지고있는 것이다.Python 평가 8> 10 To True

class BinaryTreeNode: 

    def __init__(self, value): 
     self.value = value 
     self.left = None 
     self.right = None 

    def insert_right(self, value): 
     self.right = BinaryTreeNode(value) 
     return self.right 

    def insert_left(self, value): 
     self.left = BinaryTreeNode(value) 
     return self.left 


def isBST(node): 
    return isBSTHelper(node, float('-inf'), float('inf')) 


def isBSTHelper(node, minimum, maximum): 
    if node is None: 
     return True 
    current_node = node.value 

    if current_node < minimum or current_node > maximum: 
     print current_node, minimum, maximum 
     # Somehow, we enter this loop even though minimum < 10 < maximum 
     return False 

    left_valid = isBSTHelper(node.left, minimum, current_node) 
    right_valid = isBSTHelper(node.right, current_node, maximum) 

    return (left_valid and right_valid) 

if __name__ == '__main__': 
    bintree = BinaryTreeNode('10') 
    bintree.insert_left('8') 
    bintree.insert_right('12') 
    # This should return True 
    print isBST(bintree) 

는 여러 개의 디버그 인쇄 문을 시도하고 그 일을 후에, 나는 내 기능 isBSTHelper 10. 내가 할 수없는 그림이다, 최대 값보다 큰 것으로, 8 CURRENT_VALUE을 평가하는 것 같다 깨달았다 왜?

수취인?

답변

0

아, 필자는 테스트 케이스의 정수 8과는 반대로 문자열 '8'을 사용했습니다.