def test_delete_node_remove_node_with_right_child_that_has_a_left_child_and_left_grandchildren( self): bt = BinaryTree() bt.root = Node(4) bt.root.left_child = Node(2) bt.root.right_child = Node(15) bt.root.left_child.left_child = Node(1) bt.root.left_child.right_child = Node(3) bt.root.right_child.left_child = Node(5) bt.root.right_child.right_child = Node(25) bt.root.right_child.right_child.left_child = Node(19) bt.root.right_child.right_child.left_child.right_child = Node(20) bt.root.right_child.right_child.left_child.left_child = Node(18) bt.root.right_child.right_child.left_child.left_child.left_child = Node( 17) bt.count = 11 bt.delete_node(15) self.assertEqual(4, bt.root.value) self.assertEqual(17, bt.root.right_child.value) self.assertEqual(5, bt.root.right_child.left_child.value) self.assertEqual(25, bt.root.right_child.right_child.value) self.assertEqual(19, bt.root.right_child.right_child.left_child.value) self.assertEqual( 18, bt.root.right_child.right_child.left_child.left_child.value) self.assertEqual( 20, bt.root.right_child.right_child.left_child.right_child.value) self.assertEqual( None, bt.root.right_child.right_child.left_child.left_child.left_child) self.assertEqual(2, bt.root.left_child.value) self.assertEqual(1, bt.root.left_child.left_child.value) self.assertEqual(3, bt.root.left_child.right_child.value) self.assertEqual(10, bt.count)
def test_delete_node_remove_root_only_right_child(self): bt = BinaryTree() bt.root = Node(4) bt.root.right_child = Node(6) bt.count = 2 bt.delete_node(4) self.assertEqual(6, bt.root.value) self.assertEqual(None, bt.root.left_child) self.assertEqual(None, bt.root.right_child) self.assertEqual(1, bt.count)
def test_delete_node_remove_root_right_and_left_child(self): bt = BinaryTree() bt.root = Node(4) bt.root.left_child = Node(2) bt.root.right_child = Node(6) bt.root.right_child.right_child = Node(8) bt.count = 4 bt.delete_node(4) self.assertEqual(6, bt.root.value) self.assertEqual(2, bt.root.left_child.value) self.assertEqual(8, bt.root.right_child.value) self.assertEqual(None, bt.root.right_child.right_child) self.assertEqual(3, bt.count)
def test_delete_node_remove_node_with_left_child_but_no_right_child_left_side( self): bt = BinaryTree() bt.root = Node(14) bt.root.left_child = Node(10) bt.root.right_child = Node(20) bt.root.left_child.left_child = Node(9) bt.root.left_child.right_child = Node(12) bt.root.left_child.left_child.left_child = Node(7) bt.count = 6 bt.delete_node(9) self.assertEqual(14, bt.root.value) self.assertEqual(10, bt.root.left_child.value) self.assertEqual(12, bt.root.left_child.right_child.value) self.assertEqual(7, bt.root.left_child.left_child.value) self.assertEqual(20, bt.root.right_child.value) self.assertEqual(5, bt.count)
def test_delete_node_remove_right_leaf_node(self): bt = BinaryTree() bt.root = Node(4) bt.root.left_child = Node(2) bt.root.right_child = Node(8) bt.root.left_child.left_child = Node(1) bt.root.left_child.right_child = Node(3) bt.root.right_child.left_child = Node(6) bt.root.right_child.right_child = Node(9) bt.count = 7 bt.delete_node(9) self.assertEqual(4, bt.root.value) self.assertEqual(8, bt.root.right_child.value) self.assertEqual(6, bt.root.right_child.left_child.value) self.assertEqual(None, bt.root.right_child.right_child) self.assertEqual(2, bt.root.left_child.value) self.assertEqual(1, bt.root.left_child.left_child.value) self.assertEqual(3, bt.root.left_child.right_child.value) self.assertEqual(6, bt.count)
def test_delete_node_remove_root_right_and_left_child_with_grandchildren( self): bt = BinaryTree() bt.root = Node(4) bt.root.left_child = Node(2) bt.root.right_child = Node(6) bt.root.left_child.left_child = Node(1) bt.root.left_child.right_child = Node(3) bt.root.right_child.left_child = Node(5) bt.root.right_child.right_child = Node(8) bt.root.right_child.right_child.left_child = Node(7) bt.count = 8 bt.delete_node(4) self.assertEqual(5, bt.root.value) self.assertEqual(6, bt.root.right_child.value) self.assertEqual(None, bt.root.right_child.left_child) self.assertEqual(2, bt.root.left_child.value) self.assertEqual(8, bt.root.right_child.right_child.value) self.assertEqual(7, bt.root.right_child.right_child.left_child.value) self.assertEqual(7, bt.count)
def test_delete_node_remove_node_with_right_child_that_has_no_left_child( self): bt = BinaryTree() bt.root = Node(4) bt.root.left_child = Node(2) bt.root.right_child = Node(6) bt.root.left_child.left_child = Node(1) bt.root.left_child.right_child = Node(3) bt.root.right_child.left_child = Node(5) bt.root.right_child.right_child = Node(7) bt.root.right_child.right_child.right_child = Node(8) bt.count = 8 bt.delete_node(6) self.assertEqual(4, bt.root.value) self.assertEqual(7, bt.root.right_child.value) self.assertEqual(5, bt.root.right_child.left_child.value) self.assertEqual(8, bt.root.right_child.right_child.value) self.assertEqual(2, bt.root.left_child.value) self.assertEqual(1, bt.root.left_child.left_child.value) self.assertEqual(3, bt.root.left_child.right_child.value) self.assertEqual(7, bt.count)