bst-typed 1.47.3 → 1.47.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +410 -354
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -346,13 +346,14 @@ bfsNodes[1].id; // 12
|
|
|
346
346
|
bfsNodes[2].id; // 16
|
|
347
347
|
```
|
|
348
348
|
|
|
349
|
+
|
|
349
350
|
## API docs & Examples
|
|
350
351
|
|
|
351
352
|
[API Docs](https://data-structure-typed-docs.vercel.app)
|
|
352
353
|
|
|
353
|
-
[Live Examples](https://
|
|
354
|
+
[Live Examples](https://vivid-algorithm.vercel.app)
|
|
354
355
|
|
|
355
|
-
<a href="https://github.com/zrwusa/
|
|
356
|
+
<a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a>
|
|
356
357
|
|
|
357
358
|
## Data Structures
|
|
358
359
|
|
|
@@ -362,464 +363,519 @@ bfsNodes[2].id; // 16
|
|
|
362
363
|
<th>Data Structure</th>
|
|
363
364
|
<th>Unit Test</th>
|
|
364
365
|
<th>Performance Test</th>
|
|
365
|
-
<th>API
|
|
366
|
-
<th>Implemented</th>
|
|
366
|
+
<th>API Docs</th>
|
|
367
367
|
</tr>
|
|
368
368
|
</thead>
|
|
369
369
|
<tbody>
|
|
370
370
|
<tr>
|
|
371
371
|
<td>Binary Tree</td>
|
|
372
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
373
|
-
</td>
|
|
374
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
375
|
-
</td>
|
|
376
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
377
372
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
373
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
374
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
378
375
|
</tr>
|
|
379
376
|
<tr>
|
|
380
377
|
<td>Binary Search Tree (BST)</td>
|
|
381
378
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
382
379
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
383
380
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BST.html"><span>BST</span></a></td>
|
|
384
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
385
381
|
</tr>
|
|
386
382
|
<tr>
|
|
387
383
|
<td>AVL Tree</td>
|
|
388
384
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
389
385
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
390
386
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AVLTree.html"><span>AVLTree</span></a></td>
|
|
387
|
+
</tr>
|
|
388
|
+
<tr>
|
|
389
|
+
<td>Red Black Tree</td>
|
|
391
390
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
391
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
392
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/RedBlackTree.html"><span>RedBlackTree</span></a></td>
|
|
392
393
|
</tr>
|
|
393
394
|
<tr>
|
|
394
395
|
<td>Tree Multiset</td>
|
|
395
396
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
396
397
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
397
398
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/TreeMultimap.html"><span>TreeMultimap</span></a></td>
|
|
398
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
399
399
|
</tr>
|
|
400
400
|
<tr>
|
|
401
401
|
<td>Segment Tree</td>
|
|
402
|
-
<td></td>
|
|
402
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
403
403
|
<td></td>
|
|
404
404
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SegmentTree.html"><span>SegmentTree</span></a></td>
|
|
405
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
406
405
|
</tr>
|
|
407
406
|
<tr>
|
|
408
407
|
<td>Binary Indexed Tree</td>
|
|
409
408
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
410
409
|
<td></td>
|
|
411
410
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryIndexedTree.html"><span>BinaryIndexedTree</span></a></td>
|
|
412
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
413
411
|
</tr>
|
|
414
412
|
<tr>
|
|
415
|
-
<td>
|
|
416
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
417
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
418
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
419
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
420
|
-
</tr>
|
|
421
|
-
<tr>
|
|
422
|
-
<td>Directed Graph</td>
|
|
423
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
424
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
425
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
426
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
427
|
-
</tr>
|
|
428
|
-
<tr>
|
|
429
|
-
<td>Undirected Graph</td>
|
|
430
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
413
|
+
<td>Heap</td>
|
|
431
414
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
432
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
433
415
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
416
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Heap.html"><span>Heap</span></a></td>
|
|
434
417
|
</tr>
|
|
435
418
|
<tr>
|
|
436
|
-
<td>
|
|
437
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
419
|
+
<td>Priority Queue</td>
|
|
438
420
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
439
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
440
421
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
422
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
441
423
|
</tr>
|
|
442
424
|
<tr>
|
|
443
|
-
<td>
|
|
444
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
425
|
+
<td>Max Priority Queue</td>
|
|
445
426
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
446
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
447
427
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
428
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
448
429
|
</tr>
|
|
449
430
|
<tr>
|
|
450
|
-
<td>
|
|
451
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
431
|
+
<td>Min Priority Queue</td>
|
|
452
432
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
453
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
454
433
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
434
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
455
435
|
</tr>
|
|
456
436
|
<tr>
|
|
457
|
-
<td>
|
|
458
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
437
|
+
<td>Trie</td>
|
|
459
438
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
460
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
461
439
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
440
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
462
441
|
</tr>
|
|
463
442
|
<tr>
|
|
464
|
-
<td>
|
|
465
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
443
|
+
<td>Graph</td>
|
|
466
444
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
467
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ObjectDeque.html"><span>ObjectDeque</span></a></td>
|
|
468
445
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
446
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
469
447
|
</tr>
|
|
470
448
|
<tr>
|
|
471
|
-
<td>
|
|
472
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
449
|
+
<td>Directed Graph</td>
|
|
473
450
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
474
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ArrayDeque.html"><span>ArrayDeque</span></a></td>
|
|
475
451
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
452
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
476
453
|
</tr>
|
|
477
454
|
<tr>
|
|
478
|
-
<td>
|
|
455
|
+
<td>Undirected Graph</td>
|
|
479
456
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
480
|
-
<td></td>
|
|
481
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
482
457
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
458
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
483
459
|
</tr>
|
|
484
|
-
|
|
485
|
-
[//]: # (<tr>)
|
|
486
|
-
|
|
487
|
-
[//]: # (<td>Hash</td>)
|
|
488
|
-
|
|
489
|
-
[//]: # (<td></td>)
|
|
490
|
-
|
|
491
|
-
[//]: # (<td></td>)
|
|
492
|
-
|
|
493
|
-
[//]: # (<td><a href="https://data-structure-typed-docs.vercel.app/classes/HashTable.html"><span>HashTable</span></a></td>)
|
|
494
|
-
|
|
495
|
-
[//]: # (<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>)
|
|
496
|
-
|
|
497
|
-
[//]: # (</tr>)
|
|
498
460
|
<tr>
|
|
499
|
-
<td>
|
|
500
|
-
<td></td>
|
|
501
|
-
<td></td>
|
|
502
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateSet.html"><span>CoordinateSet</span></a></td>
|
|
461
|
+
<td>Queue</td>
|
|
503
462
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
504
|
-
</tr>
|
|
505
|
-
<tr>
|
|
506
|
-
<td>Coordinate Map</td>
|
|
507
|
-
<td></td>
|
|
508
|
-
<td></td>
|
|
509
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateMap.html"><span>CoordinateMap</span></a></td>
|
|
510
463
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
464
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
511
465
|
</tr>
|
|
512
466
|
<tr>
|
|
513
|
-
<td>
|
|
467
|
+
<td>Deque</td>
|
|
514
468
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
515
469
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
516
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/
|
|
517
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
470
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Deque.html"><span>Deque</span></a></td>
|
|
518
471
|
</tr>
|
|
519
472
|
<tr>
|
|
520
|
-
<td>
|
|
521
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
473
|
+
<td>Linked List</td>
|
|
522
474
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
523
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
524
475
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
476
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
525
477
|
</tr>
|
|
526
478
|
<tr>
|
|
527
|
-
<td>
|
|
528
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
479
|
+
<td>Singly Linked List</td>
|
|
529
480
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
530
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
531
481
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
482
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
532
483
|
</tr>
|
|
533
484
|
<tr>
|
|
534
|
-
<td>
|
|
535
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
485
|
+
<td>Doubly Linked List</td>
|
|
536
486
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
537
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
538
487
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
488
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
539
489
|
</tr>
|
|
540
490
|
<tr>
|
|
541
|
-
<td>
|
|
491
|
+
<td>Stack</td>
|
|
542
492
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
543
|
-
<td></td>
|
|
544
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
545
493
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
494
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
546
495
|
</tr>
|
|
547
496
|
</tbody>
|
|
548
497
|
</table>
|
|
549
498
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
## Complexities
|
|
553
|
-
|
|
554
|
-
### performance of Big O
|
|
499
|
+
## Standard library data structure comparison
|
|
555
500
|
|
|
556
501
|
<table>
|
|
557
|
-
<thead>
|
|
558
|
-
<tr>
|
|
559
|
-
<th>
|
|
560
|
-
<th>
|
|
561
|
-
<th>
|
|
562
|
-
<th>
|
|
563
|
-
|
|
564
|
-
</
|
|
565
|
-
|
|
566
|
-
<
|
|
567
|
-
<
|
|
568
|
-
<td
|
|
569
|
-
<td>
|
|
570
|
-
<td>
|
|
571
|
-
|
|
572
|
-
<
|
|
573
|
-
|
|
574
|
-
<
|
|
575
|
-
<td
|
|
576
|
-
<td>
|
|
577
|
-
|
|
578
|
-
<
|
|
579
|
-
<td>
|
|
580
|
-
|
|
581
|
-
<
|
|
582
|
-
<td
|
|
583
|
-
|
|
584
|
-
<
|
|
585
|
-
<td>
|
|
586
|
-
<td>
|
|
587
|
-
|
|
588
|
-
<
|
|
589
|
-
|
|
590
|
-
<
|
|
591
|
-
<td>
|
|
592
|
-
<td>
|
|
593
|
-
<td>
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
<
|
|
597
|
-
<td>
|
|
598
|
-
<td
|
|
599
|
-
<td
|
|
600
|
-
<td
|
|
601
|
-
</tr>
|
|
602
|
-
<tr>
|
|
603
|
-
<td
|
|
604
|
-
<td
|
|
605
|
-
<td
|
|
606
|
-
<td
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
<
|
|
610
|
-
<td
|
|
611
|
-
<td
|
|
612
|
-
<td
|
|
613
|
-
|
|
614
|
-
<
|
|
615
|
-
|
|
616
|
-
|
|
502
|
+
<thead>
|
|
503
|
+
<tr>
|
|
504
|
+
<th>Data Structure Typed</th>
|
|
505
|
+
<th>C++ STL</th>
|
|
506
|
+
<th>java.util</th>
|
|
507
|
+
<th>Python collections</th>
|
|
508
|
+
</tr>
|
|
509
|
+
</thead>
|
|
510
|
+
<tbody>
|
|
511
|
+
<tr>
|
|
512
|
+
<td>Heap<E></td>
|
|
513
|
+
<td>priority_queue<T></td>
|
|
514
|
+
<td>PriorityQueue<E></td>
|
|
515
|
+
<td>heapq</td>
|
|
516
|
+
</tr>
|
|
517
|
+
<tr>
|
|
518
|
+
<td>Deque<E></td>
|
|
519
|
+
<td>deque<T></td>
|
|
520
|
+
<td>ArrayDeque<E></td>
|
|
521
|
+
<td>deque</td>
|
|
522
|
+
</tr>
|
|
523
|
+
<tr>
|
|
524
|
+
<td>Queue<E></td>
|
|
525
|
+
<td>queue<T></td>
|
|
526
|
+
<td>Queue<E></td>
|
|
527
|
+
<td>-</td>
|
|
528
|
+
</tr>
|
|
529
|
+
<tr>
|
|
530
|
+
<td>HashMap<K, V></td>
|
|
531
|
+
<td>unordered_map<K, V></td>
|
|
532
|
+
<td>HashMap<K, V></td>
|
|
533
|
+
<td>defaultdict</td>
|
|
534
|
+
</tr>
|
|
535
|
+
<tr>
|
|
536
|
+
<td>DoublyLinkedList<E></td>
|
|
537
|
+
<td>list<T></td>
|
|
538
|
+
<td>LinkedList<E></td>
|
|
539
|
+
<td>-</td>
|
|
540
|
+
</tr>
|
|
541
|
+
<tr>
|
|
542
|
+
<td>SinglyLinkedList<E></td>
|
|
543
|
+
<td>-</td>
|
|
544
|
+
<td>-</td>
|
|
545
|
+
<td>-</td>
|
|
546
|
+
</tr>
|
|
547
|
+
<tr>
|
|
548
|
+
<td>BinaryTree<K, V></td>
|
|
549
|
+
<td>-</td>
|
|
550
|
+
<td>-</td>
|
|
551
|
+
<td>-</td>
|
|
552
|
+
</tr>
|
|
553
|
+
<tr>
|
|
554
|
+
<td>BST<K, V></td>
|
|
555
|
+
<td>-</td>
|
|
556
|
+
<td>-</td>
|
|
557
|
+
<td>-</td>
|
|
558
|
+
</tr>
|
|
559
|
+
<tr>
|
|
560
|
+
<td>RedBlackTree<E></td>
|
|
561
|
+
<td>set<T></td>
|
|
562
|
+
<td>TreeSet<E></td>
|
|
563
|
+
<td>-</td>
|
|
564
|
+
</tr>
|
|
565
|
+
<tr>
|
|
566
|
+
<td>RedBlackTree<K, V></td>
|
|
567
|
+
<td>map<K, V></td>
|
|
568
|
+
<td>TreeMap<K, V></td>
|
|
569
|
+
<td>-</td>
|
|
570
|
+
</tr>
|
|
571
|
+
<tr>
|
|
572
|
+
<td>TreeMultimap<K, V></td>
|
|
573
|
+
<td>multimap<K, V></td>
|
|
574
|
+
<td>-</td>
|
|
575
|
+
<td>-</td>
|
|
576
|
+
</tr>
|
|
577
|
+
<tr>
|
|
578
|
+
<td>-</td>
|
|
579
|
+
<td>multiset<T></td>
|
|
580
|
+
<td>-</td>
|
|
581
|
+
<td>-</td>
|
|
582
|
+
</tr>
|
|
583
|
+
<tr>
|
|
584
|
+
<td>Trie</td>
|
|
585
|
+
<td>-</td>
|
|
586
|
+
<td>-</td>
|
|
587
|
+
<td>-</td>
|
|
588
|
+
</tr>
|
|
589
|
+
<tr>
|
|
590
|
+
<td>DirectedGraph<V, E></td>
|
|
591
|
+
<td>-</td>
|
|
592
|
+
<td>-</td>
|
|
593
|
+
<td>-</td>
|
|
594
|
+
</tr>
|
|
595
|
+
<tr>
|
|
596
|
+
<td>UndirectedGraph<V, E></td>
|
|
597
|
+
<td>-</td>
|
|
598
|
+
<td>-</td>
|
|
599
|
+
<td>-</td>
|
|
600
|
+
</tr>
|
|
601
|
+
<tr>
|
|
602
|
+
<td>PriorityQueue<E></td>
|
|
603
|
+
<td>priority_queue<T></td>
|
|
604
|
+
<td>PriorityQueue<E></td>
|
|
605
|
+
<td>-</td>
|
|
606
|
+
</tr>
|
|
607
|
+
<tr>
|
|
608
|
+
<td>Array<E></td>
|
|
609
|
+
<td>vector<T></td>
|
|
610
|
+
<td>ArrayList<E></td>
|
|
611
|
+
<td>list</td>
|
|
612
|
+
</tr>
|
|
613
|
+
<tr>
|
|
614
|
+
<td>Stack<E></td>
|
|
615
|
+
<td>stack<T></td>
|
|
616
|
+
<td>Stack<E></td>
|
|
617
|
+
<td>-</td>
|
|
618
|
+
</tr>
|
|
619
|
+
<tr>
|
|
620
|
+
<td>Set<E></td>
|
|
621
|
+
<td>-</td>
|
|
622
|
+
<td>HashSet<E></td>
|
|
623
|
+
<td>set</td>
|
|
624
|
+
</tr>
|
|
625
|
+
<tr>
|
|
626
|
+
<td>Map<K, V></td>
|
|
627
|
+
<td>-</td>
|
|
628
|
+
<td>HashMap<K, V></td>
|
|
629
|
+
<td>dict</td>
|
|
630
|
+
</tr>
|
|
631
|
+
<tr>
|
|
632
|
+
<td>-</td>
|
|
633
|
+
<td>unordered_set<T></td>
|
|
634
|
+
<td>HashSet<E></td>
|
|
635
|
+
<td>-</td>
|
|
636
|
+
</tr>
|
|
637
|
+
<tr>
|
|
638
|
+
<td>Map<K, V></td>
|
|
639
|
+
<td>-</td>
|
|
640
|
+
<td>-</td>
|
|
641
|
+
<td>OrderedDict</td>
|
|
642
|
+
</tr>
|
|
643
|
+
<tr>
|
|
644
|
+
<td>-</td>
|
|
645
|
+
<td>unordered_multiset</td>
|
|
646
|
+
<td>-</td>
|
|
647
|
+
<td>Counter</td>
|
|
648
|
+
</tr>
|
|
649
|
+
<tr>
|
|
650
|
+
<td>-</td>
|
|
651
|
+
<td>-</td>
|
|
652
|
+
<td>LinkedHashSet<E></td>
|
|
653
|
+
<td>-</td>
|
|
654
|
+
</tr>
|
|
655
|
+
<tr>
|
|
656
|
+
<td>HashMap<K, V></td>
|
|
657
|
+
<td>-</td>
|
|
658
|
+
<td>LinkedHashMap<K, V></td>
|
|
659
|
+
<td>-</td>
|
|
660
|
+
</tr>
|
|
661
|
+
<tr>
|
|
662
|
+
<td>-</td>
|
|
663
|
+
<td>unordered_multimap<K, V></td>
|
|
664
|
+
<td>-</td>
|
|
665
|
+
<td>-</td>
|
|
666
|
+
</tr>
|
|
667
|
+
<tr>
|
|
668
|
+
<td>-</td>
|
|
669
|
+
<td>bitset<N></td>
|
|
670
|
+
<td>-</td>
|
|
671
|
+
<td>-</td>
|
|
672
|
+
</tr>
|
|
673
|
+
</tbody>
|
|
617
674
|
</table>
|
|
618
675
|
|
|
619
|
-
|
|
676
|
+
## Benchmark
|
|
677
|
+
|
|
678
|
+
[//]: # (No deletion!!! Start of Replace Section)
|
|
679
|
+
<div class="json-to-html-collapse clearfix 0">
|
|
680
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
|
|
681
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.32</td><td>31.93</td><td>3.67e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>70.90</td><td>14.10</td><td>0.00</td></tr><tr><td>10,000 addMany</td><td>40.58</td><td>24.64</td><td>4.87e-4</td></tr><tr><td>10,000 get</td><td>27.31</td><td>36.62</td><td>2.00e-4</td></tr></table></div>
|
|
682
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
683
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>binary-tree</span></div>
|
|
684
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 add randomly</td><td>12.35</td><td>80.99</td><td>7.17e-5</td></tr><tr><td>1,000 add & delete randomly</td><td>15.98</td><td>62.58</td><td>7.98e-4</td></tr><tr><td>1,000 addMany</td><td>10.96</td><td>91.27</td><td>0.00</td></tr><tr><td>1,000 get</td><td>18.61</td><td>53.73</td><td>0.00</td></tr><tr><td>1,000 dfs</td><td>164.20</td><td>6.09</td><td>0.04</td></tr><tr><td>1,000 bfs</td><td>58.84</td><td>17.00</td><td>0.01</td></tr><tr><td>1,000 morris</td><td>256.66</td><td>3.90</td><td>7.70e-4</td></tr></table></div>
|
|
685
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
686
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>bst</span></div>
|
|
687
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.59</td><td>31.66</td><td>2.74e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>74.56</td><td>13.41</td><td>8.32e-4</td></tr><tr><td>10,000 addMany</td><td>29.16</td><td>34.30</td><td>0.00</td></tr><tr><td>10,000 get</td><td>29.24</td><td>34.21</td><td>0.00</td></tr></table></div>
|
|
688
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
689
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>rb-tree</span></div>
|
|
690
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>85.85</td><td>11.65</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>211.54</td><td>4.73</td><td>0.00</td></tr><tr><td>100,000 getNode</td><td>37.92</td><td>26.37</td><td>1.65e-4</td></tr></table></div>
|
|
691
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
692
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
|
|
693
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>SRC PQ 10,000 add</td><td>0.57</td><td>1748.73</td><td>4.96e-6</td></tr><tr><td>CJS PQ 10,000 add</td><td>0.57</td><td>1746.69</td><td>4.91e-6</td></tr><tr><td>MJS PQ 10,000 add</td><td>0.57</td><td>1749.68</td><td>4.43e-6</td></tr><tr><td>SRC PQ 10,000 add & pop</td><td>3.47</td><td>288.14</td><td>6.38e-4</td></tr><tr><td>CJS PQ 10,000 add & pop</td><td>3.39</td><td>295.36</td><td>3.90e-5</td></tr><tr><td>MJS PQ 10,000 add & pop</td><td>3.37</td><td>297.17</td><td>3.03e-5</td></tr></table></div>
|
|
694
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
695
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
|
|
696
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.10</td><td>9534.93</td><td>8.72e-7</td></tr><tr><td>1,000 addEdge</td><td>6.30</td><td>158.67</td><td>0.00</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>2.16e+4</td><td>3.03e-7</td></tr><tr><td>1,000 getEdge</td><td>22.31</td><td>44.82</td><td>0.00</td></tr><tr><td>tarjan</td><td>210.90</td><td>4.74</td><td>0.01</td></tr><tr><td>tarjan all</td><td>214.72</td><td>4.66</td><td>0.01</td></tr><tr><td>topologicalSort</td><td>172.52</td><td>5.80</td><td>0.00</td></tr></table></div>
|
|
697
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
698
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
|
|
699
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>275.88</td><td>3.62</td><td>0.12</td></tr><tr><td>1,000,000 Map set</td><td>211.66</td><td>4.72</td><td>0.01</td></tr><tr><td>1,000,000 Set add</td><td>177.72</td><td>5.63</td><td>0.02</td></tr><tr><td>1,000,000 set & get</td><td>317.60</td><td>3.15</td><td>0.02</td></tr><tr><td>1,000,000 Map set & get</td><td>274.99</td><td>3.64</td><td>0.03</td></tr><tr><td>1,000,000 Set add & has</td><td>172.23</td><td>5.81</td><td>0.02</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>929.40</td><td>1.08</td><td>0.07</td></tr><tr><td>1,000,000 Map ObjKey set & get</td><td>310.02</td><td>3.23</td><td>0.05</td></tr><tr><td>1,000,000 Set ObjKey add & has</td><td>283.28</td><td>3.53</td><td>0.04</td></tr></table></div>
|
|
700
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
701
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
|
|
702
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add & pop</td><td>5.80</td><td>172.35</td><td>8.78e-5</td></tr><tr><td>10,000 fib add & pop</td><td>357.92</td><td>2.79</td><td>0.00</td></tr></table></div>
|
|
703
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
704
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
|
|
705
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>221.57</td><td>4.51</td><td>0.03</td></tr><tr><td>1,000,000 unshift</td><td>229.02</td><td>4.37</td><td>0.07</td></tr><tr><td>1,000,000 unshift & shift</td><td>169.21</td><td>5.91</td><td>0.02</td></tr><tr><td>1,000,000 insertBefore</td><td>314.48</td><td>3.18</td><td>0.07</td></tr></table></div>
|
|
706
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
707
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>singly-linked-list</span></div>
|
|
708
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 push & pop</td><td>212.98</td><td>4.70</td><td>0.01</td></tr><tr><td>10,000 insertBefore</td><td>250.68</td><td>3.99</td><td>0.01</td></tr></table></div>
|
|
709
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
710
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
|
|
711
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 refill & poll</td><td>8.91</td><td>112.29</td><td>2.26e-4</td></tr></table></div>
|
|
712
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
713
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
|
|
714
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add & pop</td><td>103.59</td><td>9.65</td><td>0.00</td></tr></table></div>
|
|
715
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
716
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
|
|
717
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>14.55</td><td>68.72</td><td>6.91e-4</td></tr><tr><td>1,000,000 push & pop</td><td>23.40</td><td>42.73</td><td>5.94e-4</td></tr><tr><td>1,000,000 push & shift</td><td>24.41</td><td>40.97</td><td>1.45e-4</td></tr><tr><td>1,000,000 unshift & shift</td><td>22.56</td><td>44.32</td><td>1.30e-4</td></tr></table></div>
|
|
718
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
719
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
|
|
720
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>39.90</td><td>25.07</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>81.79</td><td>12.23</td><td>0.00</td></tr></table></div>
|
|
721
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
722
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
|
|
723
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>37.60</td><td>26.60</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>47.01</td><td>21.27</td><td>0.00</td></tr></table></div>
|
|
724
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
725
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
|
|
726
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>45.97</td><td>21.76</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>66.20</td><td>15.11</td><td>0.00</td></tr></table></div>
|
|
727
|
+
</div>
|
|
728
|
+
|
|
729
|
+
[//]: # (No deletion!!! End of Replace Section)
|
|
730
|
+
|
|
731
|
+
## Built-in classic algorithms
|
|
620
732
|
|
|
621
733
|
<table>
|
|
622
|
-
<thead>
|
|
623
|
-
<tr>
|
|
624
|
-
<th>
|
|
625
|
-
<th>
|
|
626
|
-
<th>
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
<
|
|
630
|
-
|
|
631
|
-
</
|
|
632
|
-
<
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
<td>
|
|
636
|
-
|
|
637
|
-
<
|
|
638
|
-
<td>
|
|
639
|
-
<td
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
<td
|
|
643
|
-
|
|
644
|
-
<
|
|
645
|
-
<td>
|
|
646
|
-
<td>
|
|
647
|
-
|
|
648
|
-
</
|
|
649
|
-
<
|
|
650
|
-
|
|
651
|
-
<
|
|
652
|
-
<td>
|
|
653
|
-
<td>1
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
</
|
|
657
|
-
|
|
658
|
-
<
|
|
659
|
-
<td>
|
|
660
|
-
<td>
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
<td
|
|
664
|
-
</tr>
|
|
665
|
-
<tr>
|
|
666
|
-
<td
|
|
667
|
-
<td
|
|
668
|
-
<td>
|
|
669
|
-
|
|
670
|
-
<
|
|
671
|
-
<td>
|
|
672
|
-
</
|
|
673
|
-
<
|
|
674
|
-
|
|
675
|
-
<
|
|
676
|
-
<td>
|
|
677
|
-
<td>
|
|
678
|
-
<td>
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
<
|
|
682
|
-
<td
|
|
683
|
-
<td>
|
|
684
|
-
|
|
685
|
-
<
|
|
686
|
-
<td>
|
|
687
|
-
<td
|
|
688
|
-
</
|
|
689
|
-
|
|
690
|
-
<
|
|
691
|
-
<td>
|
|
692
|
-
<td>
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
<td
|
|
696
|
-
</tr>
|
|
697
|
-
<tr>
|
|
698
|
-
<td
|
|
699
|
-
<td>
|
|
700
|
-
|
|
701
|
-
<td>
|
|
702
|
-
|
|
703
|
-
<
|
|
704
|
-
</
|
|
705
|
-
<
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
<td>
|
|
709
|
-
|
|
710
|
-
<
|
|
711
|
-
<td>
|
|
712
|
-
|
|
713
|
-
|
|
734
|
+
<thead>
|
|
735
|
+
<tr>
|
|
736
|
+
<th>Algorithm</th>
|
|
737
|
+
<th>Function Description</th>
|
|
738
|
+
<th>Iteration Type</th>
|
|
739
|
+
</tr>
|
|
740
|
+
</thead>
|
|
741
|
+
<tbody>
|
|
742
|
+
<tr>
|
|
743
|
+
<td>Binary Tree DFS</td>
|
|
744
|
+
<td>Traverse a binary tree in a depth-first manner, starting from the root node, first visiting the left subtree,
|
|
745
|
+
and then the right subtree, using recursion.
|
|
746
|
+
</td>
|
|
747
|
+
<td>Recursion + Iteration</td>
|
|
748
|
+
</tr>
|
|
749
|
+
<tr>
|
|
750
|
+
<td>Binary Tree BFS</td>
|
|
751
|
+
<td>Traverse a binary tree in a breadth-first manner, starting from the root node, visiting nodes level by level
|
|
752
|
+
from left to right.
|
|
753
|
+
</td>
|
|
754
|
+
<td>Iteration</td>
|
|
755
|
+
</tr>
|
|
756
|
+
<tr>
|
|
757
|
+
<td>Graph DFS</td>
|
|
758
|
+
<td>Traverse a graph in a depth-first manner, starting from a given node, exploring along one path as deeply as
|
|
759
|
+
possible, and backtracking to explore other paths. Used for finding connected components, paths, etc.
|
|
760
|
+
</td>
|
|
761
|
+
<td>Recursion + Iteration</td>
|
|
762
|
+
</tr>
|
|
763
|
+
<tr>
|
|
764
|
+
<td>Binary Tree Morris</td>
|
|
765
|
+
<td>Morris traversal is an in-order traversal algorithm for binary trees with O(1) space complexity. It allows tree
|
|
766
|
+
traversal without additional stack or recursion.
|
|
767
|
+
</td>
|
|
768
|
+
<td>Iteration</td>
|
|
769
|
+
</tr>
|
|
770
|
+
<tr>
|
|
771
|
+
<td>Graph BFS</td>
|
|
772
|
+
<td>Traverse a graph in a breadth-first manner, starting from a given node, first visiting nodes directly connected
|
|
773
|
+
to the starting node, and then expanding level by level. Used for finding shortest paths, etc.
|
|
774
|
+
</td>
|
|
775
|
+
<td>Recursion + Iteration</td>
|
|
776
|
+
</tr>
|
|
777
|
+
<tr>
|
|
778
|
+
<td>Graph Tarjan's Algorithm</td>
|
|
779
|
+
<td>Find strongly connected components in a graph, typically implemented using depth-first search.</td>
|
|
780
|
+
<td>Recursion</td>
|
|
781
|
+
</tr>
|
|
782
|
+
<tr>
|
|
783
|
+
<td>Graph Bellman-Ford Algorithm</td>
|
|
784
|
+
<td>Finding the shortest paths from a single source, can handle negative weight edges</td>
|
|
785
|
+
<td>Iteration</td>
|
|
786
|
+
</tr>
|
|
787
|
+
<tr>
|
|
788
|
+
<td>Graph Dijkstra's Algorithm</td>
|
|
789
|
+
<td>Finding the shortest paths from a single source, cannot handle negative weight edges</td>
|
|
790
|
+
<td>Iteration</td>
|
|
791
|
+
</tr>
|
|
792
|
+
<tr>
|
|
793
|
+
<td>Graph Floyd-Warshall Algorithm</td>
|
|
794
|
+
<td>Finding the shortest paths between all pairs of nodes</td>
|
|
795
|
+
<td>Iteration</td>
|
|
796
|
+
</tr>
|
|
797
|
+
<tr>
|
|
798
|
+
<td>Graph getCycles</td>
|
|
799
|
+
<td>Find all cycles in a graph or detect the presence of cycles.</td>
|
|
800
|
+
<td>Recursion</td>
|
|
801
|
+
</tr>
|
|
802
|
+
<tr>
|
|
803
|
+
<td>Graph getCutVertexes</td>
|
|
804
|
+
<td>Find cut vertices in a graph, which are nodes that, when removed, increase the number of connected components in
|
|
805
|
+
the graph.
|
|
806
|
+
</td>
|
|
807
|
+
<td>Recursion</td>
|
|
808
|
+
</tr>
|
|
809
|
+
<tr>
|
|
810
|
+
<td>Graph getSCCs</td>
|
|
811
|
+
<td>Find strongly connected components in a graph, which are subgraphs where any two nodes can reach each other.
|
|
812
|
+
</td>
|
|
813
|
+
<td>Recursion</td>
|
|
814
|
+
</tr>
|
|
815
|
+
<tr>
|
|
816
|
+
<td>Graph getBridges</td>
|
|
817
|
+
<td>Find bridges in a graph, which are edges that, when removed, increase the number of connected components in the
|
|
818
|
+
graph.
|
|
819
|
+
</td>
|
|
820
|
+
<td>Recursion</td>
|
|
821
|
+
</tr>
|
|
822
|
+
<tr>
|
|
823
|
+
<td>Graph topologicalSort</td>
|
|
824
|
+
<td>Perform topological sorting on a directed acyclic graph (DAG) to find a linear order of nodes such that all
|
|
825
|
+
directed edges go from earlier nodes to later nodes.
|
|
826
|
+
</td>
|
|
827
|
+
<td>Recursion</td>
|
|
828
|
+
</tr>
|
|
829
|
+
</tbody>
|
|
714
830
|
</table>
|
|
715
831
|
|
|
716
|
-
|
|
717
|
-
|
|
832
|
+
## Software Engineering Design Standards
|
|
718
833
|
<table>
|
|
719
|
-
<
|
|
720
|
-
<
|
|
721
|
-
<th>
|
|
722
|
-
|
|
723
|
-
<
|
|
724
|
-
<
|
|
725
|
-
<
|
|
726
|
-
|
|
727
|
-
<
|
|
728
|
-
</
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
<tr>
|
|
732
|
-
<td
|
|
733
|
-
<td>
|
|
734
|
-
|
|
735
|
-
<
|
|
736
|
-
<td>
|
|
737
|
-
<td>
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
<
|
|
741
|
-
<td
|
|
742
|
-
|
|
743
|
-
<
|
|
744
|
-
<td>
|
|
745
|
-
<td>
|
|
746
|
-
|
|
747
|
-
<
|
|
748
|
-
</
|
|
749
|
-
<
|
|
750
|
-
|
|
751
|
-
<
|
|
752
|
-
<td>
|
|
753
|
-
<td>
|
|
754
|
-
|
|
755
|
-
<
|
|
756
|
-
<td
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
<
|
|
760
|
-
<td>
|
|
761
|
-
<td>
|
|
762
|
-
|
|
763
|
-
<td>1</td>
|
|
764
|
-
<td>No</td>
|
|
765
|
-
<td></td>
|
|
766
|
-
</tr>
|
|
767
|
-
<tr>
|
|
768
|
-
<td><strong>Merge sort</strong></td>
|
|
769
|
-
<td>n log(n)</td>
|
|
770
|
-
<td>n log(n)</td>
|
|
771
|
-
<td>n log(n)</td>
|
|
772
|
-
<td>n</td>
|
|
773
|
-
<td>Yes</td>
|
|
774
|
-
<td></td>
|
|
775
|
-
</tr>
|
|
776
|
-
<tr>
|
|
777
|
-
<td><strong>Quick sort</strong></td>
|
|
778
|
-
<td>n log(n)</td>
|
|
779
|
-
<td>n log(n)</td>
|
|
780
|
-
<td>n<sup>2</sup></td>
|
|
781
|
-
<td>log(n)</td>
|
|
782
|
-
<td>No</td>
|
|
783
|
-
<td>Quicksort is usually done in-place with O(log(n)) stack space</td>
|
|
784
|
-
</tr>
|
|
785
|
-
<tr>
|
|
786
|
-
<td><strong>Shell sort</strong></td>
|
|
787
|
-
<td>n log(n)</td>
|
|
788
|
-
<td>depends on gap sequence</td>
|
|
789
|
-
<td>n (log(n))<sup>2</sup></td>
|
|
790
|
-
<td>1</td>
|
|
791
|
-
<td>No</td>
|
|
792
|
-
<td></td>
|
|
793
|
-
</tr>
|
|
794
|
-
<tr>
|
|
795
|
-
<td><strong>Counting sort</strong></td>
|
|
796
|
-
<td>n + r</td>
|
|
797
|
-
<td>n + r</td>
|
|
798
|
-
<td>n + r</td>
|
|
799
|
-
<td>n + r</td>
|
|
800
|
-
<td>Yes</td>
|
|
801
|
-
<td>r - biggest number in array</td>
|
|
802
|
-
</tr>
|
|
803
|
-
<tr>
|
|
804
|
-
<td><strong>Radix sort</strong></td>
|
|
805
|
-
<td>n * k</td>
|
|
806
|
-
<td>n * k</td>
|
|
807
|
-
<td>n * k</td>
|
|
808
|
-
<td>n + k</td>
|
|
809
|
-
<td>Yes</td>
|
|
810
|
-
<td>k - length of longest key</td>
|
|
811
|
-
</tr>
|
|
812
|
-
</tbody>
|
|
834
|
+
<tr>
|
|
835
|
+
<th>Principle</th>
|
|
836
|
+
<th>Description</th>
|
|
837
|
+
</tr>
|
|
838
|
+
<tr>
|
|
839
|
+
<td>Practicality</td>
|
|
840
|
+
<td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
|
|
841
|
+
</tr>
|
|
842
|
+
<tr>
|
|
843
|
+
<td>Extensibility</td>
|
|
844
|
+
<td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
|
|
845
|
+
</tr>
|
|
846
|
+
<tr>
|
|
847
|
+
<td>Modularization</td>
|
|
848
|
+
<td>Includes data structure modularization and independent NPM packages.</td>
|
|
849
|
+
</tr>
|
|
850
|
+
<tr>
|
|
851
|
+
<td>Efficiency</td>
|
|
852
|
+
<td>All methods provide time and space complexity, comparable to native JS performance.</td>
|
|
853
|
+
</tr>
|
|
854
|
+
<tr>
|
|
855
|
+
<td>Maintainability</td>
|
|
856
|
+
<td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
|
|
857
|
+
</tr>
|
|
858
|
+
<tr>
|
|
859
|
+
<td>Testability</td>
|
|
860
|
+
<td>Automated and customized unit testing, performance testing, and integration testing.</td>
|
|
861
|
+
</tr>
|
|
862
|
+
<tr>
|
|
863
|
+
<td>Portability</td>
|
|
864
|
+
<td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
|
|
865
|
+
</tr>
|
|
866
|
+
<tr>
|
|
867
|
+
<td>Reusability</td>
|
|
868
|
+
<td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
|
|
869
|
+
</tr>
|
|
870
|
+
<tr>
|
|
871
|
+
<td>Security</td>
|
|
872
|
+
<td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
|
|
873
|
+
</tr>
|
|
874
|
+
<tr>
|
|
875
|
+
<td>Scalability</td>
|
|
876
|
+
<td>Data structure software does not involve load issues.</td>
|
|
877
|
+
</tr>
|
|
813
878
|
</table>
|
|
814
879
|
|
|
815
|
-

|
|
816
|
-
|
|
817
|
-

|
|
818
|
-
|
|
819
|
-

|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
880
|
|
|
825
881
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bst-typed",
|
|
3
|
-
"version": "1.47.
|
|
3
|
+
"version": "1.47.4",
|
|
4
4
|
"description": "BST (Binary Search Tree). Javascript & Typescript Data Structure.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -144,6 +144,6 @@
|
|
|
144
144
|
"typescript": "^4.9.5"
|
|
145
145
|
},
|
|
146
146
|
"dependencies": {
|
|
147
|
-
"data-structure-typed": "^1.47.
|
|
147
|
+
"data-structure-typed": "^1.47.4"
|
|
148
148
|
}
|
|
149
149
|
}
|