@@ -40,6 +40,42 @@ using Test
40
40
@test tree[1 ] == 11
41
41
@test tree[3 ] == 33
42
42
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
+
43
79
# delete
44
80
tree = AVLTree {Int,Int} ()
45
81
tree[2 ] = 20
@@ -56,14 +92,24 @@ using Test
56
92
delete! (tree, 2 )
57
93
@test isnothing (tree. root)
58
94
59
- # tree that accept any types
95
+ # tree that accepts any types
60
96
tree = AVLTree ()
61
97
tree[2 ] = ' A'
62
98
tree[1 ] = 1.1
63
99
tree[3 ] = " test"
64
100
@test tree[2 ] == ' A'
65
101
@test tree[1 ] == 1.1
66
102
@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)
67
113
68
114
# AbstractTrees interface
69
115
tree = AVLTree {Int,Int} ()
@@ -86,42 +132,6 @@ using Test
86
132
@test NodeType (root) === HasNodeType ()
87
133
@test nodetype (root) === typeof (root)
88
134
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
-
125
135
# show
126
136
tree = AVLTree {Int,Int} ()
127
137
@test sprint (show, MIME (" text/plain" ), tree) == " AVLTree()"
0 commit comments