def test_basic_functionality(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] post_order = [1, 16, 14, 86, 29, 3, 18, 63, 141, 69, 4] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) curr_pre_order = pre_order_non_recur(tr.root) self.assertEqual(curr_pre_order, pre_ordr)
def test_generate_node_count_data3(self): in_ordr = [3, 4, 1, 2, 6, 8, 12, 13, 16, 21] pre_ordr = [3, 6, 4, 2, 1, 16, 12, 8, 13, 21] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) util_generate_node_count_data(tr.root) self.assertEqual(tr.root['node_count'], len(in_ordr)) self.assertEqual(tr.root['right']['node_count'], len(in_ordr) - 1) self.assertEqual(tr.root['right']['right']['node_count'], 5)
def test_build_binary_tree(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] post_order = [1, 16, 14, 86, 29, 3, 18, 63, 141, 69, 4] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) print("printing post order -->") tr.printPostOrder() print("expected order -->") print("(" + " ".join(map(str, post_order)) + " )") self.assertEqual(5, tr.maxDepth())
def test_basic_functionality(self): in_order = [16, 6, 108, -1, -3, 42, 3, 4, -6, 12, 36, 8] pre_order = [3, 6, 16, -3, -1, 108, 42, 12, 4, -6, 8, 36] tr = BinaryTree.from_in_and_pre_order_traversal(in_order, pre_order) tr.populate_parent() self.assertEquals(get_node_successor(tr.root['left'])['data'], 108) self.assertEquals(get_node_successor(tr.root['left']['left'])['data'], 6) self.assertEquals(get_node_successor(tr.root['right']['left'])['data'], -6) self.assertEquals(get_node_successor(tr.root['right']['right']), None) self.assertEquals(get_node_successor(tr.root['right']['right']['left'])['data'], 8) self.assertEquals(get_node_successor(tr.root['left']['right']['left'])['data'], -3) self.assertEquals(get_node_successor(tr.root['left']['right']['right'])['data'], 3)
def test_print_lvl_order(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) expected_out = ''' 4 3 69 1 29 18 141 16 86 63 14 ''' print_level_order_using_dfs(tr) print("expected out -->") print(expected_out)
def setUp(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] self.tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) self.tr.populate_parent()
def test_get_kth_node_in_order3(self): in_ordr = [3, 4, 1, 2, 6, 8, 12, 13, 16, 21] pre_ordr = [3, 6, 4, 2, 1, 16, 12, 8, 13, 21] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) util_generate_node_count_data(tr.root) self._test_kth_in_order(in_ordr, tr.root)
def test_get_kth_node_in_order2(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) util_generate_node_count_data(tr.root) self._test_kth_in_order(in_ordr, tr.root)
def test_generate_node_count_data2(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) util_generate_node_count_data(tr.root) self.assertEqual(tr.root['node_count'], len(in_ordr))
def test_binary_tree_in_order_path(self): in_ordr = [1, 3, 16, 29, 14, 86, 4, 18, 69, 63, 141] pre_ordr = [4, 3, 1, 29, 16, 86, 14, 69, 18, 141, 63] tr = BinaryTree.from_in_and_pre_order_traversal(in_ordr, pre_ordr) self.assertEqual(tr.getInOrderPath(), in_ordr)