@@ -40,6 +40,42 @@ using Test
4040 @test tree[1 ] == 11
4141 @test tree[3 ] == 33
4242
43+ # right rotate
44+ tree = AVLTree {Int,Int} ()
45+ tree[3 ] = 30
46+ tree[2 ] = 20
47+ tree[1 ] = 10
48+ @test tree. root. key == 2
49+ @test tree. root. left. key == 1
50+ @test tree. root. right. key == 3
51+
52+ # left rotate
53+ tree = AVLTree {Int,Int} ()
54+ tree[1 ] = 10
55+ tree[2 ] = 20
56+ tree[3 ] = 30
57+ @test tree. root. key == 2
58+ @test tree. root. left. key == 1
59+ @test tree. root. right. key == 3
60+
61+ # left-right rotate
62+ tree = AVLTree {Int,Int} ()
63+ tree[3 ] = 30
64+ tree[1 ] = 10
65+ tree[2 ] = 20
66+ @test tree. root. key == 2
67+ @test tree. root. left. key == 1
68+ @test tree. root. right. key == 3
69+
70+ # right-left rotate
71+ tree = AVLTree {Int,Int} ()
72+ tree[1 ] = 10
73+ tree[3 ] = 30
74+ tree[2 ] = 20
75+ @test tree. root. key == 2
76+ @test tree. root. left. key == 1
77+ @test tree. root. right. key == 3
78+
4379 # delete
4480 tree = AVLTree {Int,Int} ()
4581 tree[2 ] = 20
@@ -56,14 +92,24 @@ using Test
5692 delete! (tree, 2 )
5793 @test isnothing (tree. root)
5894
59- # tree that accept any types
95+ # tree that accepts any types
6096 tree = AVLTree ()
6197 tree[2 ] = ' A'
6298 tree[1 ] = 1.1
6399 tree[3 ] = " test"
64100 @test tree[2 ] == ' A'
65101 @test tree[1 ] == 1.1
66102 @test tree[3 ] == " test"
103+ delete! (tree, 3 )
104+ @test ! isnothing (tree. root)
105+ @test ! isnothing (tree. root. left)
106+ @test isnothing (tree. root. right)
107+ delete! (tree, 1 )
108+ @test ! isnothing (tree. root)
109+ @test isnothing (tree. root. left)
110+ @test isnothing (tree. root. right)
111+ delete! (tree, 2 )
112+ @test isnothing (tree. root)
67113
68114 # AbstractTrees interface
69115 tree = AVLTree {Int,Int} ()
@@ -86,42 +132,6 @@ using Test
86132 @test NodeType (root) === HasNodeType ()
87133 @test nodetype (root) === typeof (root)
88134
89- # left rotate
90- tree = AVLTree {Int,Int} ()
91- tree[1 ] = 10
92- tree[2 ] = 20
93- tree[3 ] = 30
94- @test tree. root. key == 2
95- @test tree. root. left. key == 1
96- @test tree. root. right. key == 3
97-
98- # right rotate
99- tree = AVLTree {Int,Int} ()
100- tree[3 ] = 30
101- tree[2 ] = 20
102- tree[1 ] = 10
103- @test tree. root. key == 2
104- @test tree. root. left. key == 1
105- @test tree. root. right. key == 3
106-
107- # left-right rotate
108- tree = AVLTree {Int,Int} ()
109- tree[3 ] = 30
110- tree[1 ] = 10
111- tree[2 ] = 20
112- @test tree. root. key == 2
113- @test tree. root. left. key == 1
114- @test tree. root. right. key == 3
115-
116- # right-left rotate
117- tree = AVLTree {Int,Int} ()
118- tree[1 ] = 10
119- tree[3 ] = 30
120- tree[2 ] = 20
121- @test tree. root. key == 2
122- @test tree. root. left. key == 1
123- @test tree. root. right. key == 3
124-
125135 # show
126136 tree = AVLTree {Int,Int} ()
127137 @test sprint (show, MIME (" text/plain" ), tree) == " AVLTree()"
0 commit comments