In [ ]:
# in an in order traversal, find first node that its key is greater than given k
class bst:
def __init__(self, data = 0, left = None, right = None):
self.data = data
left = self.left
right = right.right
def find_first_key(tree):
In [ ]:
# is a tree a BST
class bst:
def __init__(self, data = 0, left = None, right = None):
self.data = data
left = self.left
right = right.right
def is_bst(tree, lower = float('-inf'), upper = float('inf')):
if not tree:
return true
if not (tree.left <= tree.data <= tree.right):
return false
return (is_bst(tree.left, float('-inf'), tree.data) and is_bst(tree.right, tree.data, float('inf')))
def is_bst_v2(tree, lower = float('-inf'), upper = float('inf')):
if not tree:
return true
if not (tree.left <= tree.data <= tree.right):
return false
return (is_bst(tree.left, float('-inf'), tree.data) and is_bst(tree.right, tree.data, float('inf')))