def test_vertical_string(self):
     root = Node(10)
     root.left_child = Node(12)
     root.left_child.left_child = Node(25)
     root.left_child.right_child = Node(30)
     root.right_child = Node(15)
     root.right_child.left_child = Node(36)
     self.assertEqual('251210303615', root.vertical_string())
 def test_find_leftmost_rightmost(self):
     root = Node(10)
     root.left_child = Node(12)
     root.left_child.left_child = Node(25)
     root.left_child.right_child = Node(30)
     root.right_child = Node(15)
     root.right_child.left_child = Node(36)
     left, right = root.find_leftmost_rightmost(0)
     self.assertEqual(left, -2)
     self.assertEqual(right, 1)
 def test_str(self):
     root = Node('a')
     root.insert_left('b')
     root.left_child.insert_right('d')
     root.insert_right('f')
     root.insert_right('c')
     root.right_child.insert_left('e')
     self.assertEqual('bdaecf', root.str_in_order())
     self.assertEqual('abdcef', root.str_pre_order())
     self.assertEqual('dbefca', root.str_post_order())
     self.assertEqual('abcdef', root.str_bfs())
 def insert(self, v):
     n = Node(v)
     if self.root == None:
         self.root = n
     else:
         x = self.root
         while not x == None:
             y = x
             x = x.left if v < x.val else x.right
         n.p = y
         if v < y.val: y.left = n
         if v >= y.val: y.right = n
示例#5
0
    def test_size_many(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual(8, self.bt.size())
示例#6
0
    def test_height_more(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual(3, self.bt.height())
示例#7
0
    def test_level_order_many(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual([6, 3, 9, 2, 5, 8, 12, 4], self.bt.level_order())
示例#8
0
    def test_size_many_unbalanced(self):
        self.bt.root = Node(6)
        n5 = self.bt.root.left_child = Node(5)
        n4 = n5.left_child = Node(4)
        n3 = n4.left_child = Node(3)
        n3.left_child = Node(2)
        n7 = self.bt.root.right_child = Node(7)
        n8 = n7.right_child = Node(8)
        n8.right_child = Node(9)

        self.assertEqual(8, self.bt.size())
示例#9
0
    def test_post_order(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual([2, 4, 5, 3, 8, 12, 9, 6], self.bt.post_order())
示例#10
0
    def test_in_order(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual([2, 3, 4, 5, 6, 8, 9, 12], self.bt.in_order())
示例#11
0
    def test_contains_internal(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual(True, self.bt.contains(3))
        self.assertEqual(True, self.bt.contains(5))
        self.assertEqual(True, self.bt.contains(9))
示例#12
0
 def test_build_tree_llist(self):
     llist = LinkedList()
     llist.append(10)
     llist.append(12)
     llist.append(15)
     llist.append(25)
     llist.append(30)
     llist.append(36)
     root = Node.build_tree_llist(llist.head)
     self.assertEqual('101225301536', root.str_pre_order())
     self.assertEqual('251230103615', root.str_in_order())
示例#13
0
    def test_contains_not(self):
        self.bt.root = Node(6)
        n3 = self.bt.root.left_child = Node(3)
        n3.left_child = Node(2)
        n5 = n3.right_child = Node(5)
        n5.left_child = Node(4)
        n9 = self.bt.root.right_child = Node(9)
        n9.left_child = Node(8)
        n9.right_child = Node(12)

        self.assertEqual(False, self.bt.contains(10))
        self.assertEqual(False, self.bt.contains(7))
        self.assertEqual(False, self.bt.contains(11))
示例#14
0
 def test_build_from_array(self):
     array = [1, 2, 3, 4, 5, 6, 7]
     root = Node.build_from_array(array)
     self.assertEqual(root.str_in_order(), '1234567')
     self.assertEqual(root.str_pre_order(), '4213657')
     self.assertEqual(root.str_post_order(), '1325764')
示例#15
0
 def test_sum_tree(self):
     root = Node(50)
     root.insert(13)
     root.insert(21)
     root.insert(27)
     root.insert(76)
     root.insert(2)
     root.insert(44)
     root.insert(51)
     root.insert(6)
     root.insert(9)
     root.insert(11)
     rootb, value = root.get_sum_tree()
     self.assertEqual(rootb.str_in_order(), '262011012071440260051')
示例#16
0
 def test_distance(self):
     root = Node(50)
     root.insert(13)
     root.insert(21)
     root.insert(27)
     root.insert(76)
     root.insert(2)
     root.insert(44)
     root.insert(51)
     root.insert(6)
     root.insert(9)
     root.insert(11)
     distance = root.distance(11, 44)
     self.assertEqual(distance, 7)
示例#17
0
 def test_fast_lca(self):
     root = Node(50)
     root.insert(13)
     root.insert(21)
     root.insert(27)
     root.insert(76)
     root.insert(2)
     root.insert(44)
     root.insert(51)
     root.insert(6)
     root.insert(9)
     root.insert(11)
     node = root.fast_lca(11, 44)
     self.assertEqual(node.data, 13)
示例#18
0
    def test_height_one(self):
        self.bt.root = Node(4)

        self.assertEqual(0, self.bt.height())
示例#19
0
 def test_to_dlinked_list(self):
     root = Node(10)
     root.left_child = Node(12)
     root.left_child.left_child = Node(25)
     root.left_child.right_child = Node(30)
     root.right_child = Node(15)
     root.right_child.left_child = Node(36)
     self.assertEqual('251230103615', root.str_in_order())
     dll = DoublyLinkedList()
     dll.head, temp = root.to_dlinked_list()
     self.assertEqual('25 12 30 10 36 15 ', str(dll))
示例#20
0
 def test_boundaries(self):
     root = Node(10)
     root.left_child = Node(12)
     root.left_child.left_child = Node(25)
     root.left_child.right_child = Node(30)
     root.left_child.left_child.right_child = Node(19)
     root.left_child.right_child.right_child = Node(23)
     root.left_child.left_child.right_child.right_child = Node(3)
     root.left_child.left_child.right_child.right_child.right_child = Node(6)
     root.right_child = Node(15)
     root.right_child.left_child = Node(36)
     self.assertEqual('1012251936233615', root.boundaries())
示例#21
0
    def test_is_not_empty(self):
        self.bt.root = Node(5)

        self.assertEqual(False, self.bt.is_empty())
示例#22
0
    def test_size_one(self):
        self.bt.root = Node(5)

        self.assertEqual(1, self.bt.size())
示例#23
0
 def test_balance(self):
     root = Node(4)
     root.left_child = Node(3)
     root.left_child.left_child = Node(2)
     root.left_child.left_child.left_child = Node(1)
     root.right_child = Node(5)
     root.right_child.right_child = Node(6)
     root.right_child.right_child.right_child = Node(7)
     broot = root.balance()
     self.assertEqual(broot.str_in_order(), '1234567')
     self.assertEqual(broot.str_pre_order(), '4213657')
     self.assertEqual(broot.str_post_order(), '1325764')
示例#24
0
 def test_build_tree_pre_post(self):
     pre_order = ['A', 'B', 'D', 'E', 'C', 'F']
     post_order = ['D', 'E', 'B', 'F', 'C', 'A']
     root = Node.build_tree_pre_post(pre_order, post_order)
     self.assertEqual('ABDECF', root.str_pre_order())
     self.assertEqual('DBEAFC', root.str_in_order())
示例#25
0
 def test_binary_search(self):
     root = Node(50)
     root.insert(13)
     root.insert(21)
     root.insert(27)
     root.insert(76)
     root.insert(2)
     root.insert(44)
     root.insert(51)
     root.insert(6)
     root.insert(9)
     root.insert(11)
     node = root.binary_search(10)
     self.assertIsNone(node)
示例#26
0
 def test_build_special_tree(self):
     pre_order = ['A', 'B', 'D', 'E', 'C', 'F', 'G']
     pre_nl = ['N', 'N', 'L', 'L', 'N', 'L', 'L']
     root, index = Node.build_special_tree(pre_order, pre_nl)
     self.assertEqual('ABDECFG', root.str_pre_order())
     self.assertEqual('DBEAFCG', root.str_in_order())
示例#27
0
    def test_compare_leaves(self):
        rootA = Node(1)
        rootA.left_child = Node(2)
        rootA.left_child.left_child = Node(4)
        rootA.right_child = Node(3)
        rootA.right_child.left_child = Node(6)
        rootA.right_child.right_child = Node(7)

        rootB = Node(0)
        rootB.left_child = Node(5)
        rootB.left_child.right_child = Node(4)
        rootB.right_child = Node(8)
        rootB.right_child.left_child = Node(6)
        rootB.right_child.right_child = Node(7)

        self.assertTrue(rootA.compare_leaves(rootB))

        rootC = Node(0)
        rootC.left_child = Node(1)
        rootC.left_child.left_child = Node(8)
        rootC.left_child.right_child = Node(9)
        rootC.right_child = Node(2)

        rootD = Node(1)
        rootD.left_child = Node(4)
        rootD.left_child.right_child = Node(8)
        rootD.right_child = Node(3)
        rootD.right_child.left_child = Node(2)
        rootD.right_child.right_child = Node(9)

        self.assertFalse(rootC.compare_leaves(rootD))
示例#28
0
 def test_insert(self):
     root = Node(50)
     root.insert(13)
     root.insert(21)
     root.insert(27)
     root.insert(76)
     root.insert(2)
     root.insert(44)
     root.insert(51)
     root.insert(6)
     root.insert(9)
     root.insert(11)
     self.assertEqual('2691113212744505176', root.str_in_order())
示例#29
0
 def test_build_tree_in_level(self):
     level_order = ['A', 'B', 'C', 'D', 'E', 'F']
     in_order = ['D', 'B', 'E', 'A', 'F', 'C']
     root = Node.build_tree_in_level(in_order, level_order)
     self.assertEqual('ABDECF', root.str_pre_order())
     self.assertEqual('DBEAFC', root.str_in_order())
示例#30
0
    def test_contains_root(self):
        self.bt.root = Node(6)
        self.bt.root.left_child = Node(3)
        self.bt.root.right_child = Node(9)

        self.assertEqual(True, self.bt.contains(6))