forked from rahuldeve/Diversification-Dataset
-
Notifications
You must be signed in to change notification settings - Fork 0
/
24Trees.txt
529 lines (308 loc) · 6.43 KB
/
24Trees.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
(2,4) Trees
9
2 5 7
10 14
Multi-Way Search Tree ( 9.4.1)
A multi- way search tree is an ordered tree such that
(cid:132) Each internal node has at least two children and stores d 1
key-element items (ki, oi), where d is the number of children
(cid:132) For a node with children v1 v2 ... vd storing keys k1 k2 ... kd1
(cid:138) keys in the subtree of v1 are less than k1
(cid:138) keys in the subtree of vi are between ki1 and ki (i = 2, ..., d 1)
(cid:138) keys in the subtree of vd are greater than kd1
(cid:132) The leaves store no items and serve as placeholders
2 6 8
11 24
15
27 32
30
2004 Goodrich, Tamassia
(2,4) Trees
1
2004 Goodrich, Tamassia
(2,4) Trees
2
Multi-Way Inorder Traversal
Multi-Way Searching
We can extend the notion of inorder traversal from binary trees
to multi-way search trees
Namely, we visit item (ki, oi) of node v between the recursive
traversals of the subtrees of v rooted at children vi and vi + 1
An inorder traversal of a multi-way search tree visits the keys in
increasing order
2 6 8
2
6
4
11 24
8
12
15
10
1
3
5
7
9
11
13
2004 Goodrich, Tamassia
(2,4) Trees
27 32
18
14
30
16
15
17
19
3
Similar to search in a binary search tree
A each internal node with children v1 v2 ... vd and keys k1 k2 ... kd1
(cid:132) k = ki (i = 1, ..., d 1): the search terminates successfully
(cid:132) k < k1: we continue the search in child v1
(cid:132) ki1 < k < ki (i = 2, ..., d 1): we continue the search in child vi
(cid:132) k > kd1: we continue the search in child vd
Reaching an external node terminates the search unsuccessfully
Example: search for 30
2 6 8
11 24
15
27 32
30
2004 Goodrich, Tamassia
(2,4) Trees
4
(2,4) Trees ( 9.4.2)
Height of a (2,4) Tree
A (2,4) tree (also called 2-4 tree or 2-3-4 tree) is a multi-way
search with the following properties
(cid:132) Node-Size Property: every internal node has at most four children
(cid:132) Depth Property: all the external nodes have the same depth
Depending on the number of children, an internal node of a
(2,4) tree is called a 2-node, 3-node or 4-node
10 15 24
2 8
12
18
27 32
Theorem: A (2,4) tree storing n items has height O(log n)
Proof:
(cid:132) Let h be the height of a (2,4) tree with n items
(cid:132) Since there are at least 2i items at depth i = 0, ... , h 1 and no
(cid:132) Thus, h log (n + 1)
Searching in a (2,4) tree with n items takes O(log n) time
depth
items
items at depth h, we have
n 1 + 2 + 4 + ... + 2h1 = 2h 1
0
1
1
2
h1
2h1
h
0
2004 Goodrich, Tamassia
(2,4) Trees
5
2004 Goodrich, Tamassia
(2,4) Trees
6
Insertion
We insert a new item (k, o) at the parent v of the leaf reached by
searching for k
(cid:132) We preserve the depth property but
(cid:132) We may cause an overflow (i.e., node v may become a 5-node)
Example: inserting key 30 causes an overflow
10 15 24
v
2 8
12
18
27 32 35
10 15 24
v
2 8
12
18
27 30 32 35
Overflow and Split
We handle an overflow at a 5-node v with a split operation:
(cid:132) let v1 ... v5 be the children of v and k1 ... k4 be the keys of v
(cid:132) node v is replaced nodes v' and v"
(cid:138) v' is a 3-node with keys k1 k2 and children v1 v2 v3
(cid:138) v" is a 2-node with key k4 and children v4 v5
(cid:132) key k3 is inserted into the parent u of v (a new root may be created)
The overflow may propagate to the parent node u
u
15 24
v
u
12
18
27 30 32 35
12
18
v1 v2 v3 v4 v5
15 24 32
v'
27 30
v"
35
v1 v2 v3
v4
v5
2004 Goodrich, Tamassia
(2,4) Trees
7
2004 Goodrich, Tamassia
(2,4) Trees
8
Analysis of Insertion
Deletion
Algorithm insert(k, o)
1. We search for key k to locate the
insertion node v
2. We add the new entry (k, o) at node v
3. while overflow(v)
if isRoot(v)
create a new empty root above v
v split(v)
Let T be a (2,4) tree
with n items
(cid:132) Tree T has O(log n)
height
(cid:132) Step 1 takes O(log n)
time because we visit
O(log n) nodes
(cid:132) Step 2 takes O(1) time
(cid:132) Step 3 takes O(log n)
time because each split
takes O(1) time and we
perform O(log n) splits
Thus, an insertion in a
(2,4) tree takes O(log n)
time
We reduce deletion of an entry to the case where the item is at the
node with leaf children
Otherwise, we replace the entry with its inorder successor (or,
equivalently, with its inorder predecessor) and delete the latter entry
Example: to delete key 24, we replace it with 27 (inorder successor)
10 15 24
2 8
12
18
27 32 35
10 15 27
2 8
12
18
32 35
2004 Goodrich, Tamassia
(2,4) Trees
9
2004 Goodrich, Tamassia
(2,4) Trees
10
Underflow and Fusion
Deleting an entry from a node v may cause an underflow, where
node v becomes a 1-node with one child and no keys
To handle an underflow at node v with parent u, we consider two
cases
Case 1: the adjacent siblings of v are 2-nodes
(cid:132) Fusion operation: we merge v with an adjacent sibling w and move
an entry from u to the merged node v'
(cid:132) After a fusion, the underflow may propagate to the parent u
u
9 14
u
9
2 5 7
w
10
v
2 5 7
10 14
v'
Underflow and Transfer
To handle an underflow at node v with parent u, we consider
two cases
Case 2: an adjacent sibling w of v is a 3-node or a 4-node
(cid:132) Transfer operation:
1. we move a child of w to v
2. we move an item from u to v
3. we move an item from w to u
(cid:132) After a transfer, no underflow occurs
u
4 9
w
6 8
2
v
2
u
4 8
w
6
2004 Goodrich, Tamassia
(2,4) Trees
11
2004 Goodrich, Tamassia
(2,4) Trees
v
9
12
Analysis of Deletion
Let T be a (2,4) tree with n items
(cid:132) Tree T has O(log n) height
In a deletion operation
(cid:132) We visit O(log n) nodes to locate the node from
which to delete the entry
(cid:132) We handle an underflow with a series of O(log n)
fusions, followed by at most one transfer
(cid:132) Each fusion and transfer takes O(1) time
Thus, deleting an item from a (2,4) tree takes
O(log n) time
Implementing a Dictionary
Comparison of efficient dictionary implementations
Search
Insert
Delete
Notes
Hash
Table
1
expected
1
expected
1
expected
no ordered dictionary
methods
simple to implement
Skip List
log n
high prob.
log n
high prob.
log n
high prob.
randomized insertion
simple to implement
(2,4)
Tree
log n
worst-case
log n
worst-case
log n
worst-case
complex to implement
2004 Goodrich, Tamassia
(2,4) Trees
13
2004 Goodrich, Tamassia
(2,4) Trees
14