Exemplo n.º 1
0
 def test_init(self):
     data = 123
     node = Node(number)
     assert node.number is number
     assert node.left is None
     assert node.right is None
     assert node.height = 1
Exemplo n.º 2
0
    def test_update_height(self):
        self.assertEqual(self.tree.height, -1)
        self.tree.node = Node(5)
        self.tree.update_height()
        self.assertEqual(self.tree.height, 0)

        self.tree.node.left = AVLTree(Node(3))
        self.tree.update_height()
        self.assertEqual(self.tree.node.left.height, 0)
        self.assertEqual(self.tree.height, 1)

        self.tree.node.right = AVLTree(Node(6))
        self.tree.update_height()
        self.assertEqual(self.tree.height, 1)

        self.tree.node.right.node.right = AVLTree(Node(8))
        self.tree.update_height()
        self.assertEqual(self.tree.height, 2)
Exemplo n.º 3
0
    def test_rebalancing(self):
        self.tree.node = Node(5)
        self.tree.node.right = AVLTree(Node('x'))
        self.tree.node.left = AVLTree(Node(3))
        self.tree.node.left.node.right = AVLTree(Node(4))
        self.tree.node.left.node.left = AVLTree(Node('c'))
        self.tree.node.left.node.right.node.left = AVLTree(Node('y'))
        self.tree.node.left.node.right.node.right = AVLTree(Node('z'))

        self.tree.rebalance()

        self.assertEqual(self.tree.node.key, 4)
        self.assertEqual(self.tree.node.left.node.key, 3)
        self.assertEqual(self.tree.node.right.node.key, 5)
        self.assertEqual(self.tree.node.left.node.left.node.key, 'c')
        self.assertEqual(self.tree.node.left.node.right.node.key, 'y')
        self.assertEqual(self.tree.node.right.node.left.node.key, 'z')
        self.assertEqual(self.tree.node.right.node.right.node.key, 'x')
Exemplo n.º 4
0
    def test_right_rotation(self):
        self.tree.node = Node(5)
        self.tree.node.right = AVLTree(Node('x'))
        self.tree.node.left = AVLTree(Node(4))
        self.tree.node.left.node.right = AVLTree(Node('c'))
        self.tree.node.left.node.left = AVLTree(Node(3))
        self.tree.node.left.node.left.node.left = AVLTree(Node('y'))
        self.tree.node.left.node.left.node.right = AVLTree(Node('z'))

        self.tree.right_rotate()

        self.assertEqual(self.tree.node.key, 4)
        self.assertEqual(self.tree.node.left.node.key, 3)
        self.assertEqual(self.tree.node.right.node.key, 5)
        self.assertEqual(self.tree.node.left.node.left.node.key, 'y')
        self.assertEqual(self.tree.node.left.node.right.node.key, 'z')
        self.assertEqual(self.tree.node.right.node.left.node.key, 'c')
        self.assertEqual(self.tree.node.right.node.right.node.key, 'x')
Exemplo n.º 5
0
    def test_left_rotation(self):
        self.tree.node = Node(5)
        self.tree.node.left = AVLTree(Node('x'))
        self.tree.node.right = AVLTree(Node(8))
        self.tree.node.right.node.left = AVLTree(Node('c'))
        self.tree.node.right.node.right = AVLTree(Node(9))
        self.tree.node.right.node.right.node.left = AVLTree(Node('y'))
        self.tree.node.right.node.right.node.right = AVLTree(Node('z'))

        self.tree.left_rotate()

        self.assertEqual(self.tree.node.key, 8)
        self.assertEqual(self.tree.node.left.node.key, 5)
        self.assertEqual(self.tree.node.right.node.key, 9)
        self.assertEqual(self.tree.node.left.node.left.node.key, 'x')
        self.assertEqual(self.tree.node.left.node.right.node.key, 'c')
        self.assertEqual(self.tree.node.right.node.left.node.key, 'y')
        self.assertEqual(self.tree.node.right.node.right.node.key, 'z')
Exemplo n.º 6
0
    def test_rebalancing(self):
        self.tree.node = Node(5)
        self.tree.node.right = AVLTree(Node("x"))
        self.tree.node.left = AVLTree(Node(3))
        self.tree.node.left.node.right = AVLTree(Node(4))
        self.tree.node.left.node.left = AVLTree(Node("c"))
        self.tree.node.left.node.right.node.left = AVLTree(Node("y"))
        self.tree.node.left.node.right.node.right = AVLTree(Node("z"))

        self.tree.rebalance()

        self.assertEqual(self.tree.node.key, 4)
        self.assertEqual(self.tree.node.left.node.key, 3)
        self.assertEqual(self.tree.node.right.node.key, 5)
        self.assertEqual(self.tree.node.left.node.left.node.key, "c")
        self.assertEqual(self.tree.node.left.node.right.node.key, "y")
        self.assertEqual(self.tree.node.right.node.left.node.key, "z")
        self.assertEqual(self.tree.node.right.node.right.node.key, "x")
Exemplo n.º 7
0
    def test_right_rotation(self):
        self.tree.node = Node(5)
        self.tree.node.right = AVLTree(Node("x"))
        self.tree.node.left = AVLTree(Node(4))
        self.tree.node.left.node.right = AVLTree(Node("c"))
        self.tree.node.left.node.left = AVLTree(Node(3))
        self.tree.node.left.node.left.node.left = AVLTree(Node("y"))
        self.tree.node.left.node.left.node.right = AVLTree(Node("z"))

        self.tree.right_rotate()

        self.assertEqual(self.tree.node.key, 4)
        self.assertEqual(self.tree.node.left.node.key, 3)
        self.assertEqual(self.tree.node.right.node.key, 5)
        self.assertEqual(self.tree.node.left.node.left.node.key, "y")
        self.assertEqual(self.tree.node.left.node.right.node.key, "z")
        self.assertEqual(self.tree.node.right.node.left.node.key, "c")
        self.assertEqual(self.tree.node.right.node.right.node.key, "x")
Exemplo n.º 8
0
    def test_left_rotation(self):
        self.tree.node = Node(5)
        self.tree.node.left = AVLTree(Node("x"))
        self.tree.node.right = AVLTree(Node(8))
        self.tree.node.right.node.left = AVLTree(Node("c"))
        self.tree.node.right.node.right = AVLTree(Node(9))
        self.tree.node.right.node.right.node.left = AVLTree(Node("y"))
        self.tree.node.right.node.right.node.right = AVLTree(Node("z"))

        self.tree.left_rotate()

        self.assertEqual(self.tree.node.key, 8)
        self.assertEqual(self.tree.node.left.node.key, 5)
        self.assertEqual(self.tree.node.right.node.key, 9)
        self.assertEqual(self.tree.node.left.node.left.node.key, "x")
        self.assertEqual(self.tree.node.left.node.right.node.key, "c")
        self.assertEqual(self.tree.node.right.node.left.node.key, "y")
        self.assertEqual(self.tree.node.right.node.right.node.key, "z")
Exemplo n.º 9
0
 def test_height(self):
     # Create node with no children
     node = Node(4)
     assert node.height() == 0
     # Attach left child node
     node.left = Node(2)
     assert node.height() == 1
     # Attach right child node
     node.right = Node(6)
     assert node.height() == 1
     # Attach left-left grandchild node
     node.left.left = Node(1)
     assert node.height() == 2
     # Attach right-right grandchild node
     node.right.right = Node(8)
     assert node.height() == 2
     # Attach right-right-left great-grandchild node
     node.right.right.left = Node(7)
     assert node.height() == 3
Exemplo n.º 10
0
	def test_init(self):
		data = 'a'
		n = Node(data)
		assert n.data == 'a'
		assert n.left_child is None
		assert n.right_child is None