@@ -81,6 +81,10 @@ using Test
8181 tree[2 ] = 20
8282 tree[1 ] = 10
8383 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
8488 delete! (tree, 3 )
8589 @test ! isnothing (tree. root)
8690 @test ! isnothing (tree. root. left)
@@ -94,25 +98,47 @@ using Test
9498
9599 # right rotate
96100 tree = AVLTree {Int,Int} ()
97- tree[4 ] = 40
101+ tree[3 ] = 30
98102 tree[2 ] = 20
99- tree[5 ] = 50
103+ tree[10 ] = 0
100104 tree[1 ] = 10
101- tree[3 ] = 30
102- delete! (tree, 4 )
105+ delete! (tree, 10 )
103106 @test tree. root. key == 2
104107 @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
107109
108110 # 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
110120
111121 # 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
113131
114132 # 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
116142
117143 # tree that accepts any types
118144 tree = AVLTree ()
0 commit comments