Python评估8> 10真实

时间:2016-10-27 05:18:44

标签: python-2.7 graph binary-tree binary-search-tree

我正在尝试编写一个程序来检查BinaryTree是否是BinarySearchTree。这是我到目前为止所做的。

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似乎评估current_value,即8,大于最大值,即10。我无法想象为什么。

任何参赛者?

1 个答案:

答案 0 :(得分:0)

啊,我的测试用例是使用字符串'8'而不是整数8:)

&#xA;