def test_insert_three(self): T = rb_tree([41, 38, 31]) self.assertEquals(T.root, T.iterative_tree_search(38)) self.assertEquals(T.nil.color, 1) self.wrap(T, 38, 31, 41, -1, 1) self.wrap(T, 31, -1, -1, 38, 0) self.wrap(T, 41, -1, -1, 38, 0)
def test_insert_three(self): T = rb_tree([41, 38, 31]) self.assertEqual(T.root, T.iterative_tree_search(38)) self.assertEqual(T.nil.color, 1) self.wrap(T, 38, 31, 41, -1, 1) self.wrap(T, 31, -1, -1, 38, 0) self.wrap(T, 41, -1, -1, 38, 0)
def test_tree_delete_color_2(self): print("\n") print("tree_left_rotation") tree = rb_tree() tree.insert(7) tree.insert(5) tree.insert(9) tree.insert(3) tree.insert(6) tree.insert(8) tree.insert(10) tree.insert(1) tree.insert(2) tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [7, 5, 2, 1, 3, 6, 9, 8, 10]) self.assertEqual(tree_preorder_color, [ 'black', 'red', 'black', 'red', 'red', 'black', 'black', 'red', 'red' ]) tree.delete(6) tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [7, 2, 1, 5, 3, 9, 8, 10]) self.assertEqual( tree_preorder_color, ['black', 'red', 'black', 'black', 'red', 'black', 'red', 'red']) tree.delete(7) tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [8, 2, 1, 5, 3, 9, 10]) self.assertEqual( tree_preorder_color, ['black', 'red', 'black', 'black', 'red', 'black', 'red']) print("\n")
def test_delete_two(self): T = rb_tree([41, 38, 31, 12, 19, 9]) T.delete(T.iterative_tree_search(9)) T.delete(T.iterative_tree_search(12)) self.wrap(T, 38, 19, 41, -1, 1) self.wrap(T, 19, -1, 31, 38, 1) self.wrap(T, 41, -1, -1, 38, 1) self.wrap(T, 31, -1, -1, 19, 0)
def test_delete_five(self): T = rb_tree([41, 38, 31, 12, 19, 9]) T.delete(T.iterative_tree_search(9)) T.delete(T.iterative_tree_search(12)) T.delete(T.iterative_tree_search(19)) T.delete(T.iterative_tree_search(31)) T.delete(T.iterative_tree_search(38)) self.wrap(T, 41, -1, -1, -1, 1)
def test_insert_four(self): T = rb_tree([41, 38, 31, 12]) self.assertEquals(T.root, T.iterative_tree_search(38)) self.assertEquals(T.nil.color, 1) self.wrap(T, 38, 31, 41, -1, 1) self.wrap(T, 31, 12, -1, 38, 1) self.wrap(T, 41, -1, -1, 38, 1) self.wrap(T, 12, -1, -1, 31, 0)
def test_delete_six(self): T = rb_tree([41, 38, 31, 12, 19, 9]) T.delete(T.iterative_tree_search(9)) T.delete(T.iterative_tree_search(12)) T.delete(T.iterative_tree_search(19)) T.delete(T.iterative_tree_search(31)) T.delete(T.iterative_tree_search(38)) T.delete(T.iterative_tree_search(41)) self.assertEqual(T.root, T.nil)
def test_delete_six(self): T = rb_tree([41, 38, 31, 12, 19, 9]) T.delete(T.iterative_tree_search(9)) T.delete(T.iterative_tree_search(12)) T.delete(T.iterative_tree_search(19)) T.delete(T.iterative_tree_search(31)) T.delete(T.iterative_tree_search(38)) T.delete(T.iterative_tree_search(41)) self.assertEquals(T.root, T.nil)
def test_insert_six(self): T = rb_tree([41, 38, 31, 12, 19, 9]) self.assertEqual(T.root, T.iterative_tree_search(38)) self.assertEqual(T.nil.color, 1) self.wrap(T, 38, 19, 41, -1, 1) self.wrap(T, 19, 12, 31, 38, 0) self.wrap(T, 41, -1, -1, 38, 1) self.wrap(T, 12, 9, -1, 19, 1) self.wrap(T, 31, -1, -1, 19, 1) self.wrap(T, 9, -1, -1, 12, 0)
def test_insert_six(self): T = rb_tree([41, 38, 31, 12, 19, 9]) self.assertEquals(T.root, T.iterative_tree_search(38)) self.assertEquals(T.nil.color, 1) self.wrap(T, 38, 19, 41, -1, 1) self.wrap(T, 19, 12, 31, 38, 0) self.wrap(T, 41, -1, -1, 38, 1) self.wrap(T, 12, 9, -1, 19, 1) self.wrap(T, 31, -1, -1, 19, 1) self.wrap(T, 9, -1, -1, 12, 0)
def test_tree_left_rotation_1(self): print("\n") print("tree_left_rotation_1") tree = rb_tree() tree.bst_insert(2) tree.bst_insert(1) tree.bst_insert(3) tree.print() print("intial prorder tree", "\n") tree.left_rotate(tree.root) tree_preorder = [node.data for node in tree.preorder()] self.assertEqual(tree_preorder, [3, 2, 1]) tree.print() print("tree after left rotation about root in prorder") print("\n")
def test_tree_insert_color_1(self): print("\n") print("tree_color_check_1") # print("checking in order, preorder and post order") tree = rb_tree() for i in range(1, 8): tree.insert(i) tree.print() tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [2, 1, 4, 3, 6, 5, 7]) self.assertEqual( tree_preorder_color, ['black', 'black', 'red', 'black', 'black', 'red', 'red']) print("\n")
def test_tree_insert_color_0(self): print("\n") print("tree_color_check_0") # print("checking in order, preorder and post order") tree = rb_tree() tree.insert(2) tree.insert(1) tree.insert(3) tree.insert(4) tree.print() tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [2, 1, 3, 4]) self.assertEqual(tree_preorder_color, ['black', 'black', 'black', 'red']) print("\n")
def test_tree_right_rotation_2(self): print("\n") print("tree_right_rotation_2") tree = rb_tree() tree.bst_insert(7) tree.bst_insert(5) tree.bst_insert(9) tree.bst_insert(3) tree.bst_insert(6) tree.bst_insert(8) tree.bst_insert(10) tree.bst_insert(1) tree.bst_insert(2) tree.print() print("intial prorder tree", "\n") tree.right_rotate(tree.root) tree_preorder = [node.data for node in tree.preorder()] self.assertEqual(tree_preorder, [5, 3, 1, 2, 7, 6, 9, 8, 10]) tree.print() print("tree after right rotation about root in prorder") print("\n")
def test_tree_left_rotation_3(self): print("\n") print("tree_left_rotation_3") tree = rb_tree() tree.bst_insert(7) tree.bst_insert(5) tree.bst_insert(9) tree.bst_insert(3) tree.bst_insert(6) tree.bst_insert(8) tree.bst_insert(10) tree.bst_insert(1) tree.bst_insert(2) tree.print() print("intial prorder tree", "\n") tree.left_rotate(tree.root.right) tree_preorder = [node.data for node in tree.preorder()] self.assertEqual(tree_preorder, [7, 5, 3, 1, 2, 6, 10, 9, 8]) tree.print() print("tree after left rotation about root in prorder") print("\n")
def test_tree_delete_0(self): print("\n") print("tree_insert") print("checking in order, preorder and post order") tree = rb_tree() tree.insert(7) tree.insert(5) tree.insert(9) tree.insert(6) tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [7, 5, 6, 9]) self.assertEqual(tree_preorder_color, ['black', 'black', 'red', 'black']) tree.delete(9) tree_preorder = [node.data for node in tree.preorder()] tree_preorder_color = [node.color for node in tree.preorder()] self.assertEqual(tree_preorder, [6, 5, 7]) self.assertEqual(tree_preorder_color, ['black', 'black', 'black']) print("\n")
#fix imports because I am using some utility from other packages import sys from os import path sys.path.append( path.dirname( path.dirname( path.abspath(__file__) ) ) ) from sorting.utils import generate from bst import bst_tree from rb_tree import rb_tree from avl_tree import avl_tree #tree visits from tree_algo import tree_visit_in_order, tree_visit_pre_order, tree_visit_post_order, tree_visit_level_order #tree statistc orders from tree_algo import tree_min, tree_max, tree_floor, tree_ceiling, tree_rank, tree_select, tree_size bst = bst_tree() rb = rb_tree() avl = avl_tree() #testing bst print("---------------------") test_tree( bst ) #testing rb_tree print("----------------------") test_tree( rb ) #test avl tree print("-----------------------") test_tree( avl )
def test_insert_one(self): T = rb_tree([41]) print(T.root.iterative_tree_search(41).p.key) self.assertEqual(T.root, T.root.iterative_tree_search(41)) self.assertEqual(T.nil.color, 1) self.wrap(T, 41, -1, -1, -1, 1)
def test_insert_two(self): T = rb_tree([41, 38]) self.assertEqual(T.root, T.iterative_tree_search(41)) self.assertEqual(T.nil.color, 1) self.wrap(T, 41, 38, -1, -1, 1) self.wrap(T, 38, -1, -1, 41, 0)
def test_insert_one(self): T = rb_tree([41]) print T.root.iterative_tree_search(41).p.key self.assertEquals(T.root, T.root.iterative_tree_search(41)) self.assertEquals(T.nil.color, 1) self.wrap(T, 41, -1, -1, -1, 1)