def test_int(self): min_bst_queue = MinBSTQueue(BinaryNode.parse_tree("[[1[[2]3[4]]]5[6]]", int)) self.assertEqual(min_bst_queue.get().value, 1) self.assertEqual(min_bst_queue.get().value, 2) self.assertEqual(min_bst_queue.get().value, 3) self.assertEqual(min_bst_queue.get().value, 4) self.assertEqual(min_bst_queue.get().value, 5) self.assertEqual(min_bst_queue.get().value, 6)
def solution(root, k): min_bst_queue = MinBSTQueue(root) max_bst_queue = MaxBSTQueue(root) i = min_bst_queue.get() j = max_bst_queue.get() while i is not j: i_j_sum = i.value + j.value if i_j_sum == k: return i, j elif i_j_sum > k: j = max_bst_queue.get() elif i_j_sum < k: i = min_bst_queue.get() return None
def test_one_node(self): min_bst_queue = MinBSTQueue(BinaryNode.parse_tree("[1]", int)) self.assertEqual(min_bst_queue.get().value, 1)
def test_no_right(self): min_bst_queue = MinBSTQueue(BinaryNode.parse_tree("[[1]2]", int)) self.assertEqual(min_bst_queue.get().value, 1) self.assertEqual(min_bst_queue.get().value, 2)
def test_no_left(self): binary_tree = BinaryNode.parse_tree("[1[2]]", int) min_bst_queue = MinBSTQueue(binary_tree) self.assertEqual(min_bst_queue.get().value, 1) self.assertEqual(min_bst_queue.get().value, 2)