from bst import BST last_printed = None def check_bst(node): global last_printed if node is None: return True # check left Node(due to in-order) if check_bst(node.left) is False: return False if last_printed is not None and last_printed >= node.value: return False last_printed = node.value if check_bst(node.right) is not False: return False return True tree = BST() tree.add_random_nodes() print(check_bst(tree.root))
from queue import Queue from bst import BST def dfs(node, height, linked_list_arr): if node is None: return False if len(linked_list_arr) == height: new_linked_list = Queue() linked_list_arr.append(new_linked_list) linked_list_arr[height].enqueue(node.value) dfs(node.left, height + 1, linked_list_arr) dfs(node.right, height + 1, linked_list_arr) def create_linked_list_from_bst(tree): linked_list_arr = [] height = 0 dfs(tree.root, height, linked_list_arr) return linked_list_arr bst = BST() bst.add_random_nodes(10, 1, 10) print(len(create_linked_list_from_bst(bst)))