我正在尝试编写一个程序来检查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。我无法想象为什么。
任何参赛者?
答案 0 :(得分:0)
啊,我的测试用例是使用字符串'8'而不是整数8:)
&#xA;