Exemplo n.º 1
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())
Exemplo n.º 2
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())
Exemplo n.º 3
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())
Exemplo n.º 4
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())
Exemplo n.º 5
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())
Exemplo n.º 6
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())
Exemplo n.º 7
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())
Exemplo n.º 8
0
 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())
Exemplo n.º 9
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))
Exemplo n.º 10
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))
 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
Exemplo n.º 12
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())
Exemplo n.º 13
0
 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())
Exemplo n.º 14
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')
Exemplo n.º 15
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)
Exemplo n.º 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)
Exemplo n.º 17
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')
Exemplo n.º 18
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)
Exemplo n.º 19
0
 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)
Exemplo n.º 20
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))
Exemplo n.º 21
0
    def test_pre_order_one(self):
        self.bt.root = Node(1)

        self.assertEqual([1], self.bt.pre_order())
Exemplo n.º 22
0
    def test_level_order_one(self):
        self.bt.root = Node(1)

        self.assertEqual([1], self.bt.level_order())
Exemplo n.º 23
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))
Exemplo n.º 24
0
    def test_height_one(self):
        self.bt.root = Node(4)

        self.assertEqual(0, self.bt.height())
Exemplo n.º 25
0
    def test_is_not_empty(self):
        self.bt.root = Node(5)

        self.assertEqual(False, self.bt.is_empty())
Exemplo n.º 26
0
    def test_size_one(self):
        self.bt.root = Node(5)

        self.assertEqual(1, self.bt.size())
Exemplo n.º 27
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))