@@ -81,6 +81,10 @@ using Test
81
81
tree[2 ] = 20
82
82
tree[1 ] = 10
83
83
tree[3 ] = 30
84
+ # deleting a key that does not exist
85
+ # does not change the tree
86
+ delete! (tree, 4 )
87
+ @test tree === tree
84
88
delete! (tree, 3 )
85
89
@test ! isnothing (tree. root)
86
90
@test ! isnothing (tree. root. left)
@@ -94,25 +98,47 @@ using Test
94
98
95
99
# right rotate
96
100
tree = AVLTree {Int,Int} ()
97
- tree[4 ] = 40
101
+ tree[3 ] = 30
98
102
tree[2 ] = 20
99
- tree[5 ] = 50
103
+ tree[10 ] = 0
100
104
tree[1 ] = 10
101
- tree[3 ] = 30
102
- delete! (tree, 4 )
105
+ delete! (tree, 10 )
103
106
@test tree. root. key == 2
104
107
@test tree. root. left. key == 1
105
- @test tree. root. right. key == 5
106
- @test tree. root. right. left. key == 3
108
+ @test tree. root. right. key == 3
107
109
108
110
# left rotate
109
- # TODO
111
+ tree = AVLTree {Int,Int} ()
112
+ tree[1 ] = 10
113
+ tree[- 10 ] = 0
114
+ tree[2 ] = 20
115
+ tree[3 ] = 30
116
+ delete! (tree, - 10 )
117
+ @test tree. root. key == 2
118
+ @test tree. root. left. key == 1
119
+ @test tree. root. right. key == 3
110
120
111
121
# left-right rotate
112
- # TODO
122
+ tree = AVLTree {Int,Int} ()
123
+ tree[3 ] = 30
124
+ tree[1 ] = 10
125
+ tree[10 ] = 0
126
+ tree[2 ] = 20
127
+ delete! (tree, 10 )
128
+ @test tree. root. key == 2
129
+ @test tree. root. left. key == 1
130
+ @test tree. root. right. key == 3
113
131
114
132
# right-left rotate
115
- # TODO
133
+ tree = AVLTree {Int,Int} ()
134
+ tree[1 ] = 10
135
+ tree[- 10 ] = 0
136
+ tree[3 ] = 30
137
+ tree[2 ] = 20
138
+ delete! (tree, - 10 )
139
+ @test tree. root. key == 2
140
+ @test tree. root. left. key == 1
141
+ @test tree. root. right. key == 3
116
142
117
143
# tree that accepts any types
118
144
tree = AVLTree ()
0 commit comments