2016-10-27 4 views
0

私は、BinaryTreeがBinarySearchTreeかどうかをチェックするプログラムを作成しようとしています。これは私がこれまで持っていたものです。私は理解できない10である、私は複数のデバッグプリントステートメントを試したとことをやった後、私は私の関数isBSTHelperが最大値よりも大きくなるように、8である現在の値を、評価するように見えることに気付きました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) 

なぜか。

任意の受取人ですか?

答えて

0

ああ、私はテストケースの整数8に対して文字列 '8'を使用していました。