Пример #1
0
 def setUp(self):
     # The keys are unique house numbers in a street.
     # The values are the names of inhabitants.
     self.houses = [number for number in range(31, 36)]
     self.people = ['Jane', 'John', 'Ann', 'Bob', 'John']
     # Create trees for the tests to use.
     # A brand new tree.
     self.new = BinarySearchTree()
     # An empty tree. Tests removal of single node.
     self.empty = BinarySearchTree()
     self.empty.add(self.houses[0], self.people[0])
     self.empty.remove(self.houses[0])
     # Tree with a single node, with highest key.
     self.root = BinarySearchTree()
     self.root.add(self.houses[-1], self.people[-1])
     # Unbalanced tree: add the keys in ascending order.
     self.linear = BinarySearchTree()
     for house, person in zip(self.houses, self.people):
         self.linear.add(house, person)
     # Balanced tree: first add the median key.
     self.balanced = BinarySearchTree()
     self.balanced.add(33, 'Ann')
     self.balanced.add(34, 'Bob')
     self.balanced.add(35, 'John')
     self.balanced.add(32, 'John')
     self.balanced.add(31, 'Jane')
Пример #2
0
 def test_can_create_complex_tree(self):
     expected = TreeNode(
         "4",
         TreeNode("2", TreeNode("1", None, None), TreeNode("3", None,
                                                           None)),
         TreeNode("6", TreeNode("5", None, None), TreeNode("7", None,
                                                           None)),
     )
     self.assertTreeEqual(
         BinarySearchTree(["4", "2", "6", "1", "3", "5", "7"]).data(),
         expected)
Пример #3
0
 def test_can_sort_complex_tree(self):
     expected = ["1", "2", "3", "5", "6", "7"]
     assert BinarySearchTree(["2", "1", "3", "6", "7",
                              "5"]).sorted_data() == expected
Пример #4
0
 def test_data_is_retained(self):
     expected = TreeNode("4", None, None)
     bst = BinarySearchTree(["4"])
     self.assertTreeEqual(bst.data(), expected)
Пример #5
0
 def test_can_sort_if_second_number_is_greater_than_first(self):
     expected = ["2", "3"]
     assert BinarySearchTree(["2", "3"]).sorted_data() == expected
Пример #6
0
 def test_can_sort_if_second_number_is_same_as_first(self):
     expected = ["2", "2"]
     assert BinarySearchTree(["2", "2"]).sorted_data() == expected
Пример #7
0
 def test_can_sort_single_number(self):
     expected = ["2"]
     assert BinarySearchTree(["2"]).sorted_data() == expected
Пример #8
0
 def test_greater_number_at_right_node(self):
     expected = TreeNode("4", None, TreeNode("5", None, None))
     self.assertTreeEqual(BinarySearchTree(["4", "5"]).data(), expected)
Пример #9
0
 def test_same_number_at_left_node(self):
     expected = TreeNode("4", TreeNode("4", None, None), None)
     self.assertTreeEqual(BinarySearchTree(["4", "4"]).data(), expected)
Пример #10
0
 def test_smaller_number_at_left_node(self):
     expected = TreeNode("4", TreeNode("3", None, None), None)
     bst = BinarySearchTree(["4", "3"])
     self.assertTreeEqual(bst.data(), expected)