Mia Steinkirch a8e71c50db reorganize dir
Signed-off-by: Mia Steinkirch <mia.steinkirch@gmail.com>
2019-10-11 04:29:17 -07:00

65 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python
__author__ = "bt3"
from binary_search_tree import BST, Node
from binary_tree import BT, Node
def isBST(node, min_node=float("-infinity"), maxVal=float("infinity")):
if not node:
return True
if not min_node <= node.item <= maxVal:
return False
return isBST(node.left, min_node, node.item) and \
isBST(node.right, node.item, maxVal)
def isBST_other_method(node, max_node=None, min_node=None):
if not node:
return True
left, right = True, True
min_node = min_node or float('inf')
max_node = max_node or -float('inf')
if node.left:
if node.left.item > node.item or node.left.item > max_node:
left = False
else:
max_node = node.item
left = isBST(node.left, max_node, min_node)
if node.right:
if node.right.item < node.item or node.right.item < min_node:
rihjt = False
else:
min_node = node.item
right = isBST(node.right, max_node, min_node)
return left and right
if __name__ == '__main__':
bt = BST()
for i in range(1, 10):
bt.add(i)
assert(isBST(bt.root) == True)
bt = BT()
for i in range(1, 10):
bt.add(i)
assert(isBST(bt.root) == False)