data-structure-typed 1.32.9 → 1.33.2

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.
Files changed (99) hide show
  1. package/.eslintrc.json +58 -0
  2. package/.idea/codeStyles/Project.xml +61 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.prettierrc +16 -0
  5. package/.travis.yml +17 -0
  6. package/CHANGELOG.md +1 -1
  7. package/README.md +197 -257
  8. package/coverage/coverage-final.json +63 -63
  9. package/coverage/coverage-summary.json +16 -16
  10. package/dist/data-structures/binary-tree/abstract-binary-tree.js +1 -16
  11. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  12. package/dist/data-structures/binary-tree/avl-tree.js +2 -2
  13. package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
  14. package/dist/data-structures/binary-tree/rb-tree.js +3 -4
  15. package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
  16. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  17. package/dist/data-structures/graph/undirected-graph.js.map +1 -1
  18. package/dist/data-structures/hash/hash-table.js +107 -2
  19. package/dist/data-structures/hash/hash-table.js.map +1 -1
  20. package/dist/data-structures/heap/max-heap.js.map +1 -1
  21. package/dist/data-structures/heap/min-heap.js.map +1 -1
  22. package/dist/data-structures/linked-list/doubly-linked-list.js +30 -0
  23. package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  24. package/dist/data-structures/matrix/matrix2d.js +5 -8
  25. package/dist/data-structures/matrix/matrix2d.js.map +1 -1
  26. package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  27. package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  28. package/dist/data-structures/queue/deque.js.map +1 -1
  29. package/docs/index.html +197 -256
  30. package/docs/modules.html +2 -0
  31. package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +8 -18
  32. package/lib/data-structures/binary-tree/abstract-binary-tree.js +5 -23
  33. package/lib/data-structures/binary-tree/avl-tree.d.ts +7 -10
  34. package/lib/data-structures/binary-tree/avl-tree.js +6 -9
  35. package/lib/data-structures/binary-tree/binary-tree.d.ts +2 -2
  36. package/lib/data-structures/binary-tree/bst.d.ts +2 -2
  37. package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
  38. package/lib/data-structures/binary-tree/rb-tree.js +3 -3
  39. package/lib/data-structures/binary-tree/tree-multiset.d.ts +3 -3
  40. package/lib/data-structures/binary-tree/tree-multiset.js +1 -1
  41. package/lib/data-structures/graph/abstract-graph.d.ts +10 -10
  42. package/lib/data-structures/graph/abstract-graph.js +2 -2
  43. package/lib/data-structures/graph/directed-graph.d.ts +6 -6
  44. package/lib/data-structures/graph/directed-graph.js +2 -2
  45. package/lib/data-structures/graph/map-graph.d.ts +6 -6
  46. package/lib/data-structures/graph/map-graph.js +2 -2
  47. package/lib/data-structures/graph/undirected-graph.d.ts +6 -6
  48. package/lib/data-structures/graph/undirected-graph.js +2 -2
  49. package/lib/data-structures/hash/hash-table.d.ts +61 -1
  50. package/lib/data-structures/hash/hash-table.js +136 -0
  51. package/lib/data-structures/heap/heap.d.ts +31 -31
  52. package/lib/data-structures/heap/heap.js +11 -11
  53. package/lib/data-structures/heap/max-heap.d.ts +4 -4
  54. package/lib/data-structures/heap/max-heap.js +1 -1
  55. package/lib/data-structures/heap/min-heap.d.ts +4 -4
  56. package/lib/data-structures/heap/min-heap.js +1 -1
  57. package/lib/data-structures/linked-list/doubly-linked-list.d.ts +93 -54
  58. package/lib/data-structures/linked-list/doubly-linked-list.js +79 -22
  59. package/lib/data-structures/linked-list/singly-linked-list.d.ts +46 -46
  60. package/lib/data-structures/linked-list/singly-linked-list.js +20 -20
  61. package/lib/data-structures/matrix/matrix.d.ts +3 -3
  62. package/lib/data-structures/matrix/matrix2d.d.ts +1 -1
  63. package/lib/data-structures/matrix/matrix2d.js +3 -2
  64. package/lib/data-structures/priority-queue/max-priority-queue.d.ts +4 -4
  65. package/lib/data-structures/priority-queue/min-priority-queue.d.ts +4 -4
  66. package/lib/data-structures/priority-queue/priority-queue.d.ts +26 -26
  67. package/lib/data-structures/priority-queue/priority-queue.js +8 -8
  68. package/lib/data-structures/queue/deque.d.ts +30 -30
  69. package/lib/data-structures/queue/deque.js +7 -7
  70. package/lib/data-structures/queue/queue.d.ts +27 -27
  71. package/lib/data-structures/queue/queue.js +8 -8
  72. package/lib/data-structures/stack/stack.d.ts +15 -15
  73. package/lib/data-structures/stack/stack.js +6 -6
  74. package/lib/data-structures/tree/tree.d.ts +7 -7
  75. package/lib/interfaces/abstract-binary-tree.d.ts +0 -1
  76. package/lib/interfaces/avl-tree.d.ts +1 -1
  77. package/lib/types/data-structures/navigator.d.ts +1 -1
  78. package/package.json +5 -7
  79. package/test/integration/index.html +6 -6
  80. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +146 -0
  81. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +44 -0
  82. package/test/unit/data-structures/hash/coordinate-map.test.ts +54 -0
  83. package/test/unit/data-structures/hash/coordinate-set.test.ts +41 -0
  84. package/test/unit/data-structures/hash/hash-table.test.ts +97 -0
  85. package/test/unit/data-structures/linked-list/linked-list.test.ts +1 -3
  86. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +53 -0
  87. package/test/unit/data-structures/matrix/matrix.test.ts +54 -0
  88. package/test/unit/data-structures/matrix/matrix2d.test.ts +138 -0
  89. package/test/unit/data-structures/matrix/navigator.test.ts +80 -0
  90. package/test/unit/data-structures/queue/deque.test.ts +131 -0
  91. package/test/unit/data-structures/queue/queue.test.ts +168 -1
  92. package/test/unit/data-structures/stack/stack.test.ts +67 -0
  93. package/test/unit/data-structures/tree/tree.test.ts +39 -0
  94. package/test/unit/data-structures/trie/trie.test.ts +95 -0
  95. package/umd/bundle.min.js +1 -1
  96. package/umd/bundle.min.js.map +1 -1
  97. package/.eslintrc.js +0 -61
  98. package/.prettierrc.js +0 -16
  99. /package/{CODE-OF-CONDUCT.md → CODE_OF_CONDUCT.md} +0 -0
package/docs/index.html CHANGED
@@ -12,20 +12,23 @@
12
12
  <div class="col-content">
13
13
  <div class="tsd-page-title">
14
14
  <h2>data-structure-typed</h2></div>
15
- <div class="tsd-panel tsd-typography"><a id="md:data-structure-typed" class="tsd-anchor"></a><h1><a href="#md:data-structure-typed">Data Structure Typed</a></h1><p><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License">
15
+ <div class="tsd-panel tsd-typography"><a id="md:data-structure-typed" class="tsd-anchor"></a><h1><a href="#md:data-structure-typed">Data Structure Typed</a></h1><p>Data Structures of Javascript &amp; TypeScript.</p>
16
+ <p>A library that provides a variety of JavaScript and TypeScript data structures, as well as implementations of some
17
+ classic algorithms.</p>
18
+ <p>Do you envy languages like C++ with <em>std</em>, Python with <em>collections</em>, and Java with <em>java.util</em>? Well, no need to envy anymore! JavaScript and TypeScript now have <em>data-structure-typed</em></p>
19
+ <p><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License">
16
20
  <img src="https://img.shields.io/github/languages/top/zrwusa/data-structure-typed" alt="Language">
17
21
  <img src="https://img.shields.io/github/v/release/zrwusa/data-structure-typed" alt="GitHub release (latest by date)">
18
22
  <img src="https://img.shields.io/badge/branches-97.54%25-brightgreen.svg?style=flat" alt="Branches">
19
23
  <img src="https://aleen42.github.io/badges/src/npm.svg" alt="npm">
20
24
  <img src="https://aleen42.github.io/badges/src/eslint.svg" alt="eslint"></p>
21
- <a id="md:brief" class="tsd-anchor"></a><h2><a href="#md:brief">Brief</a></h2><p>Data Structures of Javascript &amp; TypeScript.</p>
22
25
  <a id="md:built-in-classic-algorithms" class="tsd-anchor"></a><h2><a href="#md:built-in-classic-algorithms">Built-in classic algorithms</a></h2><p>DFS(Depth-First Search), DFSIterative, BFS(Breadth-First Search), morris, Bellman-Ford Algorithm, Dijkstra&#39;s Algorithm,
23
26
  Floyd-Warshall Algorithm, Tarjan&#39;s Algorithm.</p>
24
- <a id="md:installation-and-usage" class="tsd-anchor"></a><h2><a href="#md:installation-and-usage">Installation and Usage</a></h2><a id="md:npm" class="tsd-anchor"></a><h3><a href="#md:npm">npm</a></h3><pre><code class="language-bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">install</span><span class="hl-1"> </span><span class="hl-2">data-structure-typed</span><span class="hl-1"> </span><span class="hl-3">--save</span>
27
+ <a id="md:installation-and-usage" class="tsd-anchor"></a><h2><a href="#md:installation-and-usage">Installation and Usage</a></h2><a id="md:npm" class="tsd-anchor"></a><h3><a href="#md:npm">npm</a></h3><pre><code class="language-bash"><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-2">i</span><span class="hl-1"> </span><span class="hl-2">data-structure-typed</span><span class="hl-1"> </span><span class="hl-3">--save</span>
25
28
  </code><button>Copy</button></pre>
26
29
  <a id="md:yarn" class="tsd-anchor"></a><h3><a href="#md:yarn">yarn</a></h3><pre><code class="language-bash"><span class="hl-0">yarn</span><span class="hl-1"> </span><span class="hl-2">add</span><span class="hl-1"> </span><span class="hl-2">data-structure-typed</span>
27
30
  </code><button>Copy</button></pre>
28
- <a id="md:cdn" class="tsd-anchor"></a><h3><a href="#md:cdn">CDN</a></h3><pre><code class="language-html"><br/><span class="hl-4">&lt;</span><span class="hl-5">script</span><span class="hl-6"> </span><span class="hl-7">src</span><span class="hl-6">=</span><span class="hl-8">&quot;https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js&quot;</span><span class="hl-4">&gt;&lt;/</span><span class="hl-5">script</span><span class="hl-4">&gt;</span>
31
+ <a id="md:cdn" class="tsd-anchor"></a><h3><a href="#md:cdn">CDN</a></h3><pre><code class="language-html"><br/><span class="hl-4">&lt;</span><span class="hl-5">script</span><span class="hl-6"> </span><span class="hl-7">src</span><span class="hl-6">=</span><span class="hl-8">&#39;https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js&#39;</span><span class="hl-4">&gt;&lt;/</span><span class="hl-5">script</span><span class="hl-4">&gt;</span>
29
32
  </code><button>Copy</button></pre>
30
33
  <pre><code class="language-js"><span class="hl-3">const</span><span class="hl-1"> {</span><span class="hl-9">AVLTree</span><span class="hl-1">} = </span><span class="hl-10">dataStructureTyped</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-9">Heap</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">MinHeap</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">SinglyLinkedList</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">Stack</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">AVLTreeNode</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">BST</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">Trie</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">DirectedGraph</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">DirectedVertex</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-9">TreeMultiset</span><br/><span class="hl-1">} = </span><span class="hl-10">dataStructureTyped</span><span class="hl-1">;</span>
31
34
  </code><button>Copy</button></pre>
@@ -39,7 +42,7 @@ Floyd-Warshall Algorithm, Tarjan&#39;s Algorithm.</p>
39
42
  <a id="md:api-docs-amp-examples" class="tsd-anchor"></a><h2><a href="#md:api-docs-amp-examples">API docs &amp; Examples</a></h2><p><a href="https://data-structure-typed-docs.vercel.app">API Docs</a></p>
40
43
  <p><a href="https://vivid-algorithm.vercel.app">Live Examples</a></p>
41
44
  <p><a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a></p>
42
- <a id="md:code-snippet" class="tsd-anchor"></a><h2><a href="#md:code-snippet">Code Snippet</a></h2><a id="md:binary-search-tree-bst-snippet" class="tsd-anchor"></a><h3><a href="#md:binary-search-tree-bst-snippet">Binary Search Tree (BST) snippet</a></h3><a id="md:ts" class="tsd-anchor"></a><h4><a href="#md:ts">TS</a></h4><pre><code class="language-ts"><span class="hl-11">import</span><span class="hl-1"> {</span><span class="hl-10">BST</span><span class="hl-1">, </span><span class="hl-10">BSTNode</span><span class="hl-1">} </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-2">&#39;data-structure-typed&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">bst</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">3</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([</span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-12">5</span><span class="hl-1">]);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-10">size</span><span class="hl-1"> === </span><span class="hl-12">16</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">has</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// true</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">node6</span><span class="hl-1"> = </span><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// BSTNode</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getHeight</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">) === </span><span class="hl-12">2</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getHeight</span><span class="hl-1">() === </span><span class="hl-12">5</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getDepth</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">) === </span><span class="hl-12">3</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getLeftMost</span><span class="hl-1">()?.</span><span class="hl-10">id</span><span class="hl-1"> === </span><span class="hl-12">1</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// null</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">BFS</span><span class="hl-1">()[</span><span class="hl-12">0</span><span class="hl-1">] === </span><span class="hl-12">11</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">objBST</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">&lt;</span><span class="hl-14">BSTNode</span><span class="hl-1">&lt;{ </span><span class="hl-10">id</span><span class="hl-1">: </span><span class="hl-14">number</span><span class="hl-1">, </span><span class="hl-10">keyA</span><span class="hl-1">: </span><span class="hl-14">number</span><span class="hl-1"> }&gt;&gt;();</span><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">});</span><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">3</span><span class="hl-1">, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">});</span><br/><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([{</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">}]);</span><br/><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span>
45
+ <a id="md:code-snippet" class="tsd-anchor"></a><h2><a href="#md:code-snippet">Code Snippet</a></h2><a id="md:binary-search-tree-bst-snippet" class="tsd-anchor"></a><h3><a href="#md:binary-search-tree-bst-snippet">Binary Search Tree (BST) snippet</a></h3><a id="md:ts" class="tsd-anchor"></a><h4><a href="#md:ts">TS</a></h4><pre><code class="language-ts"><span class="hl-11">import</span><span class="hl-1"> {</span><span class="hl-10">BST</span><span class="hl-1">, </span><span class="hl-10">BSTNode</span><span class="hl-1">} </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-2">&#39;data-structure-typed&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">bst</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">3</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([</span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-12">5</span><span class="hl-1">]);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-10">size</span><span class="hl-1"> === </span><span class="hl-12">16</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">has</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// true</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">node6</span><span class="hl-1"> = </span><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// BSTNode</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getHeight</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">) === </span><span class="hl-12">2</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getHeight</span><span class="hl-1">() === </span><span class="hl-12">5</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getDepth</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">) === </span><span class="hl-12">3</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getLeftMost</span><span class="hl-1">()?.</span><span class="hl-10">id</span><span class="hl-1"> === </span><span class="hl-12">1</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// null</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">BFS</span><span class="hl-1">()[</span><span class="hl-12">0</span><span class="hl-1">] === </span><span class="hl-12">11</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">objBST</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">&lt;</span><span class="hl-14">BSTNode</span><span class="hl-1">&lt;{</span><span class="hl-10">id</span><span class="hl-1">: </span><span class="hl-14">number</span><span class="hl-1">, </span><span class="hl-10">keyA</span><span class="hl-1">: </span><span class="hl-14">number</span><span class="hl-1">}&gt;&gt;();</span><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">});</span><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">3</span><span class="hl-1">, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">});</span><br/><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([{</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">}]);</span><br/><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span>
43
46
  </code><button>Copy</button></pre>
44
47
  <a id="md:js" class="tsd-anchor"></a><h4><a href="#md:js">JS</a></h4><pre><code class="language-js"><span class="hl-3">const</span><span class="hl-1"> {</span><span class="hl-9">BST</span><span class="hl-1">, </span><span class="hl-9">BSTNode</span><span class="hl-1">} = </span><span class="hl-0">require</span><span class="hl-1">(</span><span class="hl-2">&#39;data-structure-typed&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">bst</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">3</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([</span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-12">5</span><span class="hl-1">]);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-10">size</span><span class="hl-1"> === </span><span class="hl-12">16</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">has</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// true</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">node6</span><span class="hl-1"> = </span><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getHeight</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">) === </span><span class="hl-12">2</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getHeight</span><span class="hl-1">() === </span><span class="hl-12">5</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getDepth</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">) === </span><span class="hl-12">3</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">leftMost</span><span class="hl-1"> = </span><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">getLeftMost</span><span class="hl-1">();</span><br/><span class="hl-10">leftMost</span><span class="hl-1">?.</span><span class="hl-10">id</span><span class="hl-1"> === </span><span class="hl-12">1</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-0">expect</span><span class="hl-1">(</span><span class="hl-10">leftMost</span><span class="hl-1">?.</span><span class="hl-10">id</span><span class="hl-1">).</span><span class="hl-0">toBe</span><span class="hl-1">(</span><span class="hl-12">1</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">);</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">get</span><span class="hl-1">(</span><span class="hl-12">6</span><span class="hl-1">); </span><span class="hl-13">// null</span><br/><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true or false</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">bfsIDs</span><span class="hl-1"> = </span><span class="hl-10">bst</span><span class="hl-1">.</span><span class="hl-0">BFS</span><span class="hl-1">();</span><br/><span class="hl-10">bfsIDs</span><span class="hl-1">[</span><span class="hl-12">0</span><span class="hl-1">] === </span><span class="hl-12">11</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-0">expect</span><span class="hl-1">(</span><span class="hl-10">bfsIDs</span><span class="hl-1">[</span><span class="hl-12">0</span><span class="hl-1">]).</span><span class="hl-0">toBe</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">objBST</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">});</span><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">add</span><span class="hl-1">(</span><span class="hl-12">3</span><span class="hl-1">, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">});</span><br/><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([{</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">},</span><br/><span class="hl-1"> {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">}, {</span><span class="hl-10">id:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">, </span><span class="hl-10">keyA:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">}]);</span><br/><br/><span class="hl-10">objBST</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">11</span><span class="hl-1">);</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-9">avlTree</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-0">AVLTree</span><span class="hl-1">();</span><br/><span class="hl-10">avlTree</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([</span><span class="hl-12">11</span><span class="hl-1">, </span><span class="hl-12">3</span><span class="hl-1">, </span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-12">5</span><span class="hl-1">])</span><br/><span class="hl-10">avlTree</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span><br/><span class="hl-10">avlTree</span><span class="hl-1">.</span><span class="hl-0">remove</span><span class="hl-1">(</span><span class="hl-12">10</span><span class="hl-1">);</span><br/><span class="hl-10">avlTree</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span>
45
48
  </code><button>Copy</button></pre>
@@ -226,6 +229,191 @@ Floyd-Warshall Algorithm, Tarjan&#39;s Algorithm.</p>
226
229
  </tbody>
227
230
  </table>
228
231
 
232
+
233
+
234
+ <a id="md:standard-library-data-structure-comparison" class="tsd-anchor"></a><h3><a href="#md:standard-library-data-structure-comparison">Standard library data structure comparison</a></h3><table>
235
+ <thead>
236
+ <tr>
237
+ <th>Data Structure</th>
238
+ <th>C++ std</th>
239
+ <th>Data Structure Typed</th>
240
+ <th>java.util</th>
241
+ <th>Python collections</th>
242
+ </tr>
243
+ </thead>
244
+ <tbody>
245
+ <tr>
246
+ <td>Dynamic Array</td>
247
+ <td>std::vector&lt;T&gt;</td>
248
+ <td>Array&lt;E&gt;</td>
249
+ <td>ArrayList&lt;E&gt;</td>
250
+ <td>list</td>
251
+ </tr>
252
+ <tr>
253
+ <td>Linked List</td>
254
+ <td>std::list&lt;T&gt;</td>
255
+ <td>DoublyLinkedList&lt;E&gt;</td>
256
+ <td>LinkedList&lt;E&gt;</td>
257
+ <td>deque</td>
258
+ </tr>
259
+ <tr>
260
+ <td>Set</td>
261
+ <td>std::set&lt;T&gt;</td>
262
+ <td>Set</td>
263
+ <td>HashSet&lt;E&gt;</td>
264
+ <td>set</td>
265
+ </tr>
266
+ <tr>
267
+ <td>Map</td>
268
+ <td>std::map&lt;K, V&gt;</td>
269
+ <td>Map</td>
270
+ <td>HashMap&lt;K, V&gt;</td>
271
+ <td>dict</td>
272
+ </tr>
273
+ <tr>
274
+ <td>Unordered Map</td>
275
+ <td>std::unordered_map&lt;K, V&gt;</td>
276
+ <td>N/A</td>
277
+ <td>HashMap&lt;K, V&gt;</td>
278
+ <td>defaultdict</td>
279
+ </tr>
280
+ <tr>
281
+ <td>Unordered Set</td>
282
+ <td>std::unordered_set&lt;T&gt;</td>
283
+ <td>N/A</td>
284
+ <td>HashSet&lt;E&gt;</td>
285
+ <td>N/A</td>
286
+ </tr>
287
+ <tr>
288
+ <td>Queue</td>
289
+ <td>std::queue&lt;T&gt;</td>
290
+ <td>Queue</td>
291
+ <td>Queue&lt;E&gt;</td>
292
+ <td>N/A</td>
293
+ </tr>
294
+ <tr>
295
+ <td>Priority Queue</td>
296
+ <td>std::priority_queue&lt;T&gt;</td>
297
+ <td>PriorityQueue</td>
298
+ <td>PriorityQueue&lt;E&gt;</td>
299
+ <td>N/A</td>
300
+ </tr>
301
+ <tr>
302
+ <td>Stack</td>
303
+ <td>std::stack&lt;T&gt;</td>
304
+ <td>Stack</td>
305
+ <td>Stack&lt;E&gt;</td>
306
+ <td>N/A</td>
307
+ </tr>
308
+ <tr>
309
+ <td>Bitset</td>
310
+ <td>std::bitset&lt;N&gt;</td>
311
+ <td>N/A</td>
312
+ <td>N/A</td>
313
+ <td>N/A</td>
314
+ </tr>
315
+ <tr>
316
+ <td>Deque</td>
317
+ <td>std::deque&lt;T&gt;</td>
318
+ <td>Deque</td>
319
+ <td>N/A</td>
320
+ <td>N/A</td>
321
+ </tr>
322
+ <tr>
323
+ <td>Multiset</td>
324
+ <td>std::multiset&lt;T&gt;</td>
325
+ <td>N/A</td>
326
+ <td>N/A</td>
327
+ <td>N/A</td>
328
+ </tr>
329
+ <tr>
330
+ <td>Multimap</td>
331
+ <td>std::multimap&lt;K, V&gt;</td>
332
+ <td>N/A</td>
333
+ <td>N/A</td>
334
+ <td>N/A</td>
335
+ </tr>
336
+ <tr>
337
+ <td>Unordered Multiset</td>
338
+ <td>std::unordered_multiset</td>
339
+ <td>N/A</td>
340
+ <td>Counter</td>
341
+ <td>N/A</td>
342
+ </tr>
343
+ <tr>
344
+ <td>Ordered Dictionary</td>
345
+ <td>N/A</td>
346
+ <td>Map</td>
347
+ <td>N/A</td>
348
+ <td>OrderedDict</td>
349
+ </tr>
350
+ <tr>
351
+ <td>Double-Ended Queue (Deque)</td>
352
+ <td>std::deque&lt;T&gt;</td>
353
+ <td>Deque</td>
354
+ <td>N/A</td>
355
+ <td>N/A</td>
356
+ </tr>
357
+ <tr>
358
+ <td>Linked Hash Set</td>
359
+ <td>N/A</td>
360
+ <td>N/A</td>
361
+ <td>LinkedHashSet&lt;E&gt;</td>
362
+ <td>N/A</td>
363
+ </tr>
364
+ <tr>
365
+ <td>Linked Hash Map</td>
366
+ <td>N/A</td>
367
+ <td>N/A</td>
368
+ <td>LinkedHashMap&lt;K, V&gt;</td>
369
+ <td>N/A</td>
370
+ </tr>
371
+ <tr>
372
+ <td>Sorted Set</td>
373
+ <td>N/A</td>
374
+ <td>AVLTree, RBTree</td>
375
+ <td>TreeSet&lt;E&gt;</td>
376
+ <td>N/A</td>
377
+ </tr>
378
+ <tr>
379
+ <td>Sorted Map</td>
380
+ <td>N/A</td>
381
+ <td>AVLTree, RBTree</td>
382
+ <td>TreeMap&lt;K, V&gt;</td>
383
+ <td>N/A</td>
384
+ </tr>
385
+ <tr>
386
+ <td>Tree Set</td>
387
+ <td>std::set</td>
388
+ <td>AVLTree, RBTree</td>
389
+ <td>TreeSet&lt;E&gt;</td>
390
+ <td>N/A</td>
391
+ </tr>
392
+ <tr>
393
+ <td>Persistent Collections</td>
394
+ <td>N/A</td>
395
+ <td>N/A</td>
396
+ <td>N/A</td>
397
+ <td>N/A</td>
398
+ </tr>
399
+ <tr>
400
+ <td>unordered multiset</td>
401
+ <td>unordered multiset&lt;T&gt;</td>
402
+ <td>N/A</td>
403
+ <td>N/A</td>
404
+ <td>N/A</td>
405
+ </tr>
406
+ <tr>
407
+ <td>Unordered Multimap</td>
408
+ <td>std::unordered_multimap&lt;K, V&gt;</td>
409
+ <td>N/A</td>
410
+ <td>N/A</td>
411
+ <td>N/A</td>
412
+ </tr>
413
+ </tbody>
414
+ </table>
415
+
416
+
229
417
  <a id="md:code-design" class="tsd-anchor"></a><h2><a href="#md:code-design">Code design</a></h2><p>By strictly adhering to object-oriented design (BinaryTree -&gt; BST -&gt; AVLTree -&gt; TreeMultiset), you can seamlessly
230
418
  inherit the existing data structures to implement the customized ones you need. Object-oriented design stands as the
231
419
  optimal approach to data structure design.</p>
@@ -482,256 +670,6 @@ optimal approach to data structure design.</p>
482
670
  <td>k - length of longest key</td>
483
671
  </tr>
484
672
  </tbody>
485
- </table>
486
-
487
-
488
- <table>
489
- <tr>
490
- <th>Data Structure</th>
491
- <th>C++ STL</th>
492
- <th>java.util</th>
493
- <th>Python collections</th>
494
- </tr>
495
- <tr>
496
- <td>Dynamic Array (ArrayList)</td>
497
- <td>std::vector&lt;T&gt;</td>
498
- <td>ArrayList&lt;E&gt;</td>
499
- <td>list</td>
500
- </tr>
501
- <tr>
502
- <td>Linked List</td>
503
- <td>std::list&lt;T&gt;</td>
504
- <td>LinkedList&lt;E&gt;</td>
505
- <td>deque</td>
506
- </tr>
507
- <tr>
508
- <td>Set</td>
509
- <td>std::set&lt;T&gt;</td>
510
- <td>HashSet&lt;E&gt;</td>
511
- <td>set</td>
512
- </tr>
513
- <tr>
514
- <td>Map</td>
515
- <td>std::map&lt;K, V&gt;</td>
516
- <td>HashMap&lt;K, V&gt;</td>
517
- <td>dict</td>
518
- </tr>
519
- <tr>
520
- <td>Stack</td>
521
- <td>std::stack&lt;T&gt;</td>
522
- <td>Stack&lt;E&gt;</td>
523
- <td>N/A</td>
524
- </tr>
525
- <tr>
526
- <td>Queue</td>
527
- <td>std::queue&lt;T&gt;</td>
528
- <td>LinkedList&lt;E&gt;</td>
529
- <td>N/A</td>
530
- </tr>
531
- <tr>
532
- <td>Priority Queue</td>
533
- <td>std::priority_queue&lt;T&gt;</td>
534
- <td>PriorityQueue&lt;E&gt;</td>
535
- <td>N/A</td>
536
- </tr>
537
- <tr>
538
- <td>Hash Table</td>
539
- <td>N/A</td>
540
- <td>N/A</td>
541
- <td>defaultdict, Counter, etc.</td>
542
- </tr>
543
- <tr>
544
- <td>Deque</td>
545
- <td>std::deque&lt;T&gt;</td>
546
- <td>N/A</td>
547
- <td>N/A</td>
548
- </tr>
549
- <tr>
550
- <td>Multiset</td>
551
- <td>std::multiset&lt;T&gt;</td>
552
- <td>N/A</td>
553
- <td>N/A</td>
554
- </tr>
555
- <tr>
556
- <td>Multimap</td>
557
- <td>std::multimap&lt;K, V&gt;</td>
558
- <td>N/A</td>
559
- <td>N/A</td>
560
- </tr>
561
- <tr>
562
- <td>Unordered Set</td>
563
- <td>std::unordered_set&lt;T&gt;</td>
564
- <td>HashSet&lt;E&gt;</td>
565
- <td>N/A</td>
566
- </tr>
567
- <tr>
568
- <td>Unordered Map</td>
569
- <td>std::unordered_map&lt;K, V&gt;</td>
570
- <td>HashMap&lt;K, V&gt;</td>
571
- <td>N/A</td>
572
- </tr>
573
- <tr>
574
- <td>Bitset</td>
575
- <td>std::bitset&lt;N&gt;</td>
576
- <td>N/A</td>
577
- <td>N/A</td>
578
- </tr>
579
- <tr>
580
- <td>Ordered Dictionary (OrderedDict)</td>
581
- <td>N/A</td>
582
- <td>N/A</td>
583
- <td>OrderedDict</td>
584
- </tr>
585
- <tr>
586
- <td>User-Defined Dictionary</td>
587
- <td>N/A</td>
588
- <td>N/A</td>
589
- <td>UserDict</td>
590
- </tr>
591
- <tr>
592
- <td>User-Defined List</td>
593
- <td>N/A</td>
594
- <td>N/A</td>
595
- <td>UserList</td>
596
- </tr>
597
- <tr>
598
- <td>User-Defined Set</td>
599
- <td>N/A</td>
600
- <td>N/A</td>
601
- <td>UserSet</td>
602
- </tr>
603
- <tr>
604
- <td>Double-Ended Queue (Deque)</td>
605
- <td>std::deque&lt;T&gt;</td>
606
- <td>N/A</td>
607
- <td>N/A</td>
608
- </tr>
609
- <tr>
610
- <td>Skip List</td>
611
- <td>N/A</td>
612
- <td>N/A</td>
613
- <td>N/A</td>
614
- </tr>
615
- <tr>
616
- <td>Circular Queue</td>
617
- <td>N/A</td>
618
- <td>N/A</td>
619
- <td>N/A</td>
620
- </tr>
621
- <tr>
622
- <td>Bit Array</td>
623
- <td>N/A</td>
624
- <td>N/A</td>
625
- <td>N/A</td>
626
- </tr>
627
- <tr>
628
- <td>Bloom Filter</td>
629
- <td>N/A</td>
630
- <td>N/A</td>
631
- <td>N/A</td>
632
- </tr>
633
- <tr>
634
- <td>Linked Hash Set</td>
635
- <td>N/A</td>
636
- <td>LinkedHashSet&lt;E&gt;</td>
637
- <td>N/A</td>
638
- </tr>
639
- <tr>
640
- <td>Linked Hash Map</td>
641
- <td>N/A</td>
642
- <td>LinkedHashMap&lt;K, V&gt;</td>
643
- <td>N/A</td>
644
- </tr>
645
- <tr>
646
- <td>Sorted Set</td>
647
- <td>N/A</td>
648
- <td>TreeSet&lt;E&gt;</td>
649
- <td>N/A</td>
650
- </tr>
651
- <tr>
652
- <td>Sorted Map</td>
653
- <td>N/A</td>
654
- <td>TreeMap&lt;K, V&gt;</td>
655
- <td>N/A</td>
656
- </tr>
657
- <tr>
658
- <td>Tree Set</td>
659
- <td>N/A</td>
660
- <td>N/A</td>
661
- <td>N/A</td>
662
- </tr>
663
- <tr>
664
- <td>Tree Map</td>
665
- <td>N/A</td>
666
- <td>N/A</td>
667
- <td>N/A</td>
668
- </tr>
669
- <tr>
670
- <td>Persistent Collections</td>
671
- <td>N/A</td>
672
- <td>N/A</td>
673
- <td>N/A</td>
674
- </tr>
675
- <tr>
676
- <td>std::unordered_multiset</td>
677
- <td>std::unordered_multiset&lt;T&gt;</td>
678
- <td>N/A</td>
679
- <td>N/A</td>
680
- </tr>
681
- <tr>
682
- <td>std::unordered_multimap</td>
683
- <td>std::unordered_multimap&lt;K, V&gt;</td>
684
- <td>N/A</td>
685
- <td>N/A</td>
686
- </tr>
687
- <tr>
688
- <td>N/A</td>
689
- <td>TreeSet&lt;E&gt;</td>
690
- <td>TreeSet&lt;E&gt;</td>
691
- <td>N/A</td>
692
- </tr>
693
- <tr>
694
- <td>N/A</td>
695
- <td>TreeMap&lt;K, V&gt;</td>
696
- <td>TreeMap&lt;K, V&gt;</td>
697
- <td>N/A</td>
698
- </tr>
699
- <tr>
700
- <td>N/A</td>
701
- <td>LinkedBlockingQueue&lt;E&gt;</td>
702
- <td>N/A</td>
703
- <td>N/A</td>
704
- </tr>
705
- <tr>
706
- <td>N/A</td>
707
- <td>ConcurrentHashMap&lt;K, V&gt;</td>
708
- <td>N/A</td>
709
- <td>N/A</td>
710
- </tr>
711
- <tr>
712
- <td>N/A</td>
713
- <td>N/A</td>
714
- <td>namedtuple</td>
715
- <td>N/A</td>
716
- </tr>
717
- <tr>
718
- <td>N/A</td>
719
- <td>N/A</td>
720
- <td>ChainMap</td>
721
- <td>N/A</td>
722
- </tr>
723
- <tr>
724
- <td>N/A</td>
725
- <td>N/A</td>
726
- <td>defaultdict</td>
727
- <td>N/A</td>
728
- </tr>
729
- <tr>
730
- <td>N/A</td>
731
- <td>N/A</td>
732
- <td>Counter</td>
733
- <td>N/A</td>
734
- </tr>
735
673
  </table></div></div>
736
674
  <div class="col-sidebar">
737
675
  <div class="page-menu">
@@ -757,7 +695,6 @@ optimal approach to data structure design.</p>
757
695
  <li><a href="#md:data-structure-typed"><span>Data <wbr/>Structure <wbr/>Typed</span></a></li>
758
696
  <li>
759
697
  <ul>
760
- <li><a href="#md:brief"><span>Brief</span></a></li>
761
698
  <li><a href="#md:built-in-classic-algorithms"><span>Built-<wbr/>in classic algorithms</span></a></li>
762
699
  <li><a href="#md:installation-and-usage"><span>Installation and <wbr/>Usage</span></a></li>
763
700
  <li>
@@ -788,6 +725,9 @@ optimal approach to data structure design.</p>
788
725
  <ul>
789
726
  <li><a href="#md:ts-or-js-1"><span>TS or JS</span></a></li></ul></li></ul></li>
790
727
  <li><a href="#md:data-structures"><span>Data <wbr/>Structures</span></a></li>
728
+ <li>
729
+ <ul>
730
+ <li><a href="#md:standard-library-data-structure-comparison"><span>Standard library data structure comparison</span></a></li></ul></li>
791
731
  <li><a href="#md:code-design"><span>Code design</span></a></li>
792
732
  <li><a href="#md:complexities"><span>Complexities</span></a></li>
793
733
  <li>
@@ -827,6 +767,7 @@ optimal approach to data structure design.</p>
827
767
  <li><a href="classes/DirectedVertex.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Directed<wbr/>Vertex</span></a></li>
828
768
  <li><a href="classes/DoublyLinkedList.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Doubly<wbr/>Linked<wbr/>List</span></a></li>
829
769
  <li><a href="classes/DoublyLinkedListNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Doubly<wbr/>Linked<wbr/>List<wbr/>Node</span></a></li>
770
+ <li><a href="classes/HashNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Hash<wbr/>Node</span></a></li>
830
771
  <li><a href="classes/HashTable.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Hash<wbr/>Table</span></a></li>
831
772
  <li><a href="classes/Heap.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Heap</span></a></li>
832
773
  <li><a href="classes/HeapItem.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Heap<wbr/>Item</span></a></li>