data-structure-typed 1.33.6 → 1.33.8
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/.github/workflows/ci.yml +1 -0
- package/CHANGELOG.md +1 -1
- package/README.md +42 -38
- package/coverage/coverage-final.json +64 -63
- package/coverage/coverage-summary.json +8 -7
- package/dist/data-structures/binary-tree/segment-tree.js +24 -6
- package/dist/data-structures/binary-tree/segment-tree.js.map +1 -1
- package/dist/data-structures/hash/hash-map.js +306 -0
- package/dist/data-structures/hash/hash-map.js.map +1 -0
- package/dist/data-structures/hash/hash-table.js +128 -38
- package/dist/data-structures/hash/hash-table.js.map +1 -1
- package/dist/data-structures/hash/index.js +1 -0
- package/dist/data-structures/hash/index.js.map +1 -1
- package/dist/data-structures/linked-list/skip-linked-list.js +122 -5
- package/dist/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/types/data-structures/hash.js +3 -0
- package/dist/types/data-structures/hash.js.map +1 -0
- package/dist/types/data-structures/index.js +1 -0
- package/dist/types/data-structures/index.js.map +1 -1
- package/docs/index.html +35 -37
- package/docs/modules.html +10 -4
- package/lib/data-structures/binary-tree/segment-tree.d.ts +4 -4
- package/lib/data-structures/binary-tree/segment-tree.js +30 -14
- package/lib/data-structures/hash/hash-map.d.ts +56 -0
- package/lib/data-structures/hash/hash-map.js +167 -0
- package/lib/data-structures/hash/hash-table.d.ts +67 -23
- package/lib/data-structures/hash/hash-table.js +154 -52
- package/lib/data-structures/hash/index.d.ts +1 -0
- package/lib/data-structures/hash/index.js +1 -0
- package/lib/data-structures/linked-list/skip-linked-list.d.ts +60 -1
- package/lib/data-structures/linked-list/skip-linked-list.js +136 -1
- package/lib/types/data-structures/hash.d.ts +1 -0
- package/lib/types/data-structures/hash.js +1 -0
- package/lib/types/data-structures/index.d.ts +1 -0
- package/lib/types/data-structures/index.js +1 -0
- package/package.json +22 -22
- package/src/data-structures/binary-tree/segment-tree.ts +32 -14
- package/src/data-structures/hash/hash-map.ts +203 -0
- package/src/data-structures/hash/hash-table.ts +176 -56
- package/src/data-structures/hash/index.ts +1 -0
- package/src/data-structures/linked-list/skip-linked-list.ts +166 -1
- package/src/types/data-structures/hash.ts +1 -0
- package/src/types/data-structures/index.ts +1 -0
- package/test/integration/index.html +26 -18
- package/test/unit/data-structures/binary-tree/segment-tree.test.ts +50 -0
- package/test/unit/data-structures/hash/hash-map.test.ts +104 -0
- package/test/unit/data-structures/hash/hash-table.test.ts +97 -10
- package/test/unit/data-structures/linked-list/skip-list.test.ts +55 -0
- package/umd/bundle.min.js +1 -1
- package/umd/bundle.min.js.map +1 -1
- package/tsconfig.prod.json +0 -25
package/docs/index.html
CHANGED
|
@@ -13,23 +13,25 @@
|
|
|
13
13
|
<div class="tsd-page-title">
|
|
14
14
|
<h2>data-structure-typed</h2></div>
|
|
15
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 & TypeScript.</p>
|
|
16
|
-
<p>Do you envy
|
|
16
|
+
<p>Do you envy C++ with <a href="">std</a>, Python with <a href="">collections</a>, and Java with <a href="">java.util</a> ? Well, no need to envy anymore! JavaScript and TypeScript now have <a href="">data-structure-typed</a>.</p>
|
|
17
17
|
<p>Now you can use this library in Node.js and browser environments in CommonJS(require export.modules = ), ESModule(import export), Typescript(import export), UMD(var Queue = dataStructureTyped.Queue)</p>
|
|
18
|
+
<p>The size after packaging is 69 kB.</p>
|
|
18
19
|
<p><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License">
|
|
19
20
|
<img src="https://img.shields.io/github/languages/top/zrwusa/data-structure-typed" alt="Language">
|
|
20
21
|
<img src="https://img.shields.io/github/v/release/zrwusa/data-structure-typed" alt="GitHub release (latest by date)">
|
|
21
|
-
<img src="https://img.shields.io/badge/branches-97.54%25-brightgreen.svg?style=flat" alt="Branches">
|
|
22
22
|
<img src="https://aleen42.github.io/badges/src/npm.svg" alt="npm">
|
|
23
23
|
<img src="https://aleen42.github.io/badges/src/eslint.svg" alt="eslint"></p>
|
|
24
24
|
<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's Algorithm,
|
|
25
25
|
Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
26
|
-
<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
|
|
26
|
+
<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>
|
|
27
27
|
</code><button>Copy</button></pre>
|
|
28
28
|
<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>
|
|
29
29
|
</code><button>Copy</button></pre>
|
|
30
|
-
<
|
|
30
|
+
<pre><code class="language-js"><span class="hl-3">import</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">BinaryTree</span><span class="hl-1">, </span><span class="hl-4">Graph</span><span class="hl-1">, </span><span class="hl-4">Queue</span><span class="hl-1">, </span><span class="hl-4">Stack</span><span class="hl-1">, </span><span class="hl-4">PriorityQueue</span><span class="hl-1">, </span><span class="hl-4">BST</span><span class="hl-1">, </span><span class="hl-4">Trie</span><span class="hl-1">, </span><span class="hl-4">DoublyLinkedList</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">AVLTree</span><span class="hl-1">, </span><span class="hl-4">MinHeap</span><span class="hl-1">, </span><span class="hl-4">SinglyLinkedList</span><span class="hl-1">, </span><span class="hl-4">DirectedGraph</span><span class="hl-1">, </span><span class="hl-4">TreeMultiset</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">DirectedVertex</span><span class="hl-1">, </span><span class="hl-4">AVLTreeNode</span><br/><span class="hl-1">} </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">;</span>
|
|
31
31
|
</code><button>Copy</button></pre>
|
|
32
|
-
<
|
|
32
|
+
<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-5"><</span><span class="hl-6">script</span><span class="hl-7"> </span><span class="hl-8">src</span><span class="hl-7">=</span><span class="hl-9">'https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js'</span><span class="hl-5">></</span><span class="hl-6">script</span><span class="hl-5">></span>
|
|
33
|
+
</code><button>Copy</button></pre>
|
|
34
|
+
<pre><code class="language-js"><span class="hl-10">const</span><span class="hl-1"> {</span><span class="hl-11">Heap</span><span class="hl-1">} = </span><span class="hl-4">dataStructureTyped</span><span class="hl-1">;</span><br/><span class="hl-10">const</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-11">BinaryTree</span><span class="hl-1">, </span><span class="hl-11">Graph</span><span class="hl-1">, </span><span class="hl-11">Queue</span><span class="hl-1">, </span><span class="hl-11">Stack</span><span class="hl-1">, </span><span class="hl-11">PriorityQueue</span><span class="hl-1">, </span><span class="hl-11">BST</span><span class="hl-1">, </span><span class="hl-11">Trie</span><span class="hl-1">, </span><span class="hl-11">DoublyLinkedList</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-11">AVLTree</span><span class="hl-1">, </span><span class="hl-11">MinHeap</span><span class="hl-1">, </span><span class="hl-11">SinglyLinkedList</span><span class="hl-1">, </span><span class="hl-11">DirectedGraph</span><span class="hl-1">, </span><span class="hl-11">TreeMultiset</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-11">DirectedVertex</span><span class="hl-1">, </span><span class="hl-11">AVLTreeNode</span><br/><span class="hl-1">} = </span><span class="hl-4">dataStructureTyped</span><span class="hl-1">;</span>
|
|
33
35
|
</code><button>Copy</button></pre>
|
|
34
36
|
<p><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/examples/videos/webp_output/binary-tree-array-to-binary-tree.webp" alt="">
|
|
35
37
|
<img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/examples/videos/webp_output/binary-tree-dfs-in-order.webp" alt="">
|
|
@@ -41,17 +43,17 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
|
41
43
|
<a id="md:api-docs-amp-examples" class="tsd-anchor"></a><h2><a href="#md:api-docs-amp-examples">API docs & Examples</a></h2><p><a href="https://data-structure-typed-docs.vercel.app">API Docs</a></p>
|
|
42
44
|
<p><a href="https://vivid-algorithm.vercel.app">Live Examples</a></p>
|
|
43
45
|
<p><a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a></p>
|
|
44
|
-
<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-
|
|
46
|
+
<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-3">import</span><span class="hl-1"> {</span><span class="hl-4">BST</span><span class="hl-1">, </span><span class="hl-4">BSTNode</span><span class="hl-1">} </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">;</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">bst</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">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-4">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-4">bst</span><span class="hl-1">.</span><span class="hl-4">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-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">node6</span><span class="hl-1"> = </span><span class="hl-4">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-4">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-4">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-4">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-4">bst</span><span class="hl-1">.</span><span class="hl-0">getLeftMost</span><span class="hl-1">()?.</span><span class="hl-4">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-4">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-4">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-4">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-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">objBST</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1"><</span><span class="hl-14">BSTNode</span><span class="hl-1"><{</span><span class="hl-4">id</span><span class="hl-1">: </span><span class="hl-14">number</span><span class="hl-1">, </span><span class="hl-4">keyA</span><span class="hl-1">: </span><span class="hl-14">number</span><span class="hl-1">}>>();</span><br/><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">});</span><br/><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">});</span><br/><br/><span class="hl-4">objBST</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([{</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">}]);</span><br/><br/><span class="hl-4">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
47
|
</code><button>Copy</button></pre>
|
|
46
|
-
<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">'data-structure-typed'</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>
|
|
48
|
+
<a id="md:js" class="tsd-anchor"></a><h4><a href="#md:js">JS</a></h4><pre><code class="language-js"><span class="hl-10">const</span><span class="hl-1"> {</span><span class="hl-11">BST</span><span class="hl-1">, </span><span class="hl-11">BSTNode</span><span class="hl-1">} = </span><span class="hl-0">require</span><span class="hl-1">(</span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">);</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">bst</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">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-4">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-4">bst</span><span class="hl-1">.</span><span class="hl-4">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-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">node6</span><span class="hl-1"> = </span><span class="hl-4">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-4">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-4">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-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">leftMost</span><span class="hl-1"> = </span><span class="hl-4">bst</span><span class="hl-1">.</span><span class="hl-0">getLeftMost</span><span class="hl-1">();</span><br/><span class="hl-4">leftMost</span><span class="hl-1">?.</span><span class="hl-4">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-4">leftMost</span><span class="hl-1">?.</span><span class="hl-4">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-4">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-4">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-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">bfsIDs</span><span class="hl-1"> = </span><span class="hl-4">bst</span><span class="hl-1">.</span><span class="hl-0">BFS</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">objBST</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">BST</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">11</span><span class="hl-1">});</span><br/><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">3</span><span class="hl-1">});</span><br/><br/><span class="hl-4">objBST</span><span class="hl-1">.</span><span class="hl-0">addMany</span><span class="hl-1">([{</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">15</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">1</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">8</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">13</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">16</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">2</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">6</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">9</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">12</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">14</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">4</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">7</span><span class="hl-1">, </span><span class="hl-4">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-4">id:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">10</span><span class="hl-1">}, {</span><span class="hl-4">id:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">, </span><span class="hl-4">keyA:</span><span class="hl-1"> </span><span class="hl-12">5</span><span class="hl-1">}]);</span><br/><br/><span class="hl-4">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-10">const</span><span class="hl-1"> </span><span class="hl-11">avlTree</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">AVLTree</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">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-4">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-4">avlTree</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span>
|
|
47
49
|
</code><button>Copy</button></pre>
|
|
48
|
-
<a id="md:avltree-snippet" class="tsd-anchor"></a><h3><a href="#md:avltree-snippet">AVLTree snippet</a></h3><a id="md:ts-1" class="tsd-anchor"></a><h4><a href="#md:ts-1">TS</a></h4><pre><code class="language-ts"><span class="hl-
|
|
50
|
+
<a id="md:avltree-snippet" class="tsd-anchor"></a><h3><a href="#md:avltree-snippet">AVLTree snippet</a></h3><a id="md:ts-1" class="tsd-anchor"></a><h4><a href="#md:ts-1">TS</a></h4><pre><code class="language-ts"><span class="hl-3">import</span><span class="hl-1"> {</span><span class="hl-4">AVLTree</span><span class="hl-1">} </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">;</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">avlTree</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">AVLTree</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">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-4">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-4">avlTree</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span>
|
|
49
51
|
</code><button>Copy</button></pre>
|
|
50
|
-
<a id="md:js-1" class="tsd-anchor"></a><h4><a href="#md:js-1">JS</a></h4><pre><code class="language-js"><span class="hl-
|
|
52
|
+
<a id="md:js-1" class="tsd-anchor"></a><h4><a href="#md:js-1">JS</a></h4><pre><code class="language-js"><span class="hl-10">const</span><span class="hl-1"> {</span><span class="hl-11">AVLTree</span><span class="hl-1">} = </span><span class="hl-0">require</span><span class="hl-1">(</span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">);</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">avlTree</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">AVLTree</span><span class="hl-1">();</span><br/><span class="hl-4">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-4">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-4">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-4">avlTree</span><span class="hl-1">.</span><span class="hl-0">isAVLBalanced</span><span class="hl-1">(); </span><span class="hl-13">// true</span>
|
|
51
53
|
</code><button>Copy</button></pre>
|
|
52
|
-
<a id="md:directed-graph-simple-snippet" class="tsd-anchor"></a><h3><a href="#md:directed-graph-simple-snippet">Directed Graph simple snippet</a></h3><a id="md:ts-or-js" class="tsd-anchor"></a><h4><a href="#md:ts-or-js">TS or JS</a></h4><pre><code class="language-ts"><span class="hl-
|
|
54
|
+
<a id="md:directed-graph-simple-snippet" class="tsd-anchor"></a><h3><a href="#md:directed-graph-simple-snippet">Directed Graph simple snippet</a></h3><a id="md:ts-or-js" class="tsd-anchor"></a><h4><a href="#md:ts-or-js">TS or JS</a></h4><pre><code class="language-ts"><span class="hl-3">import</span><span class="hl-1"> {</span><span class="hl-4">DirectedGraph</span><span class="hl-1">} </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">;</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">graph</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">DirectedGraph</span><span class="hl-1">();</span><br/><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'B'</span><span class="hl-1">);</span><br/><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">hasVertex</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">); </span><span class="hl-13">// true</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">hasVertex</span><span class="hl-1">(</span><span class="hl-2">'B'</span><span class="hl-1">); </span><span class="hl-13">// true</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">hasVertex</span><span class="hl-1">(</span><span class="hl-2">'C'</span><span class="hl-1">); </span><span class="hl-13">// false</span><br/><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addEdge</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">, </span><span class="hl-2">'B'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">hasEdge</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">, </span><span class="hl-2">'B'</span><span class="hl-1">); </span><span class="hl-13">// true</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">hasEdge</span><span class="hl-1">(</span><span class="hl-2">'B'</span><span class="hl-1">, </span><span class="hl-2">'A'</span><span class="hl-1">); </span><span class="hl-13">// false</span><br/><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">removeEdgeSrcToDest</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">, </span><span class="hl-2">'B'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">hasEdge</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">, </span><span class="hl-2">'B'</span><span class="hl-1">); </span><span class="hl-13">// false</span><br/><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'C'</span><span class="hl-1">);</span><br/><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addEdge</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">, </span><span class="hl-2">'B'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addEdge</span><span class="hl-1">(</span><span class="hl-2">'B'</span><span class="hl-1">, </span><span class="hl-2">'C'</span><span class="hl-1">);</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">topologicalOrderIds</span><span class="hl-1"> = </span><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">topologicalSort</span><span class="hl-1">(); </span><span class="hl-13">// ['A', 'B', 'C']</span>
|
|
53
55
|
</code><button>Copy</button></pre>
|
|
54
|
-
<a id="md:undirected-graph-snippet" class="tsd-anchor"></a><h3><a href="#md:undirected-graph-snippet">Undirected Graph snippet</a></h3><a id="md:ts-or-js-1" class="tsd-anchor"></a><h4><a href="#md:ts-or-js-1">TS or JS</a></h4><pre><code class="language-ts"><span class="hl-
|
|
56
|
+
<a id="md:undirected-graph-snippet" class="tsd-anchor"></a><h3><a href="#md:undirected-graph-snippet">Undirected Graph snippet</a></h3><a id="md:ts-or-js-1" class="tsd-anchor"></a><h4><a href="#md:ts-or-js-1">TS or JS</a></h4><pre><code class="language-ts"><span class="hl-3">import</span><span class="hl-1"> {</span><span class="hl-4">UndirectedGraph</span><span class="hl-1">} </span><span class="hl-3">from</span><span class="hl-1"> </span><span class="hl-2">'data-structure-typed'</span><span class="hl-1">;</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">graph</span><span class="hl-1"> = </span><span class="hl-10">new</span><span class="hl-1"> </span><span class="hl-0">UndirectedGraph</span><span class="hl-1">();</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'B'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'C'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addVertex</span><span class="hl-1">(</span><span class="hl-2">'D'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">removeVertex</span><span class="hl-1">(</span><span class="hl-2">'C'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addEdge</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">, </span><span class="hl-2">'B'</span><span class="hl-1">);</span><br/><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">addEdge</span><span class="hl-1">(</span><span class="hl-2">'B'</span><span class="hl-1">, </span><span class="hl-2">'D'</span><span class="hl-1">);</span><br/><br/><span class="hl-10">const</span><span class="hl-1"> </span><span class="hl-11">dijkstraResult</span><span class="hl-1"> = </span><span class="hl-4">graph</span><span class="hl-1">.</span><span class="hl-0">dijkstra</span><span class="hl-1">(</span><span class="hl-2">'A'</span><span class="hl-1">);</span><br/><span class="hl-4">Array</span><span class="hl-1">.</span><span class="hl-0">from</span><span class="hl-1">(</span><span class="hl-4">dijkstraResult</span><span class="hl-1">?.</span><span class="hl-4">seen</span><span class="hl-1"> ?? []).</span><span class="hl-0">map</span><span class="hl-1">(</span><span class="hl-4">vertex</span><span class="hl-1"> </span><span class="hl-10">=></span><span class="hl-1"> </span><span class="hl-4">vertex</span><span class="hl-1">.</span><span class="hl-4">id</span><span class="hl-1">) </span><span class="hl-13">// ['A', 'B', 'D']</span>
|
|
55
57
|
</code><button>Copy</button></pre>
|
|
56
58
|
<a id="md:data-structures" class="tsd-anchor"></a><h2><a href="#md:data-structures">Data Structures</a></h2><table>
|
|
57
59
|
<thead>
|
|
@@ -258,24 +260,17 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
|
258
260
|
<tr>
|
|
259
261
|
<td>Set</td>
|
|
260
262
|
<td>std::set<T></td>
|
|
261
|
-
<td>Set</td>
|
|
263
|
+
<td>Set<E></td>
|
|
262
264
|
<td>HashSet<E></td>
|
|
263
265
|
<td>set</td>
|
|
264
266
|
</tr>
|
|
265
267
|
<tr>
|
|
266
268
|
<td>Map</td>
|
|
267
269
|
<td>std::map<K, V></td>
|
|
268
|
-
<td>Map
|
|
270
|
+
<td>Map<K, V></td>
|
|
269
271
|
<td>HashMap<K, V></td>
|
|
270
272
|
<td>dict</td>
|
|
271
273
|
</tr>
|
|
272
|
-
<tr>
|
|
273
|
-
<td>Unordered Map</td>
|
|
274
|
-
<td>std::unordered_map<K, V></td>
|
|
275
|
-
<td>N/A</td>
|
|
276
|
-
<td>HashMap<K, V></td>
|
|
277
|
-
<td>defaultdict</td>
|
|
278
|
-
</tr>
|
|
279
274
|
<tr>
|
|
280
275
|
<td>Unordered Set</td>
|
|
281
276
|
<td>std::unordered_set<T></td>
|
|
@@ -283,24 +278,31 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
|
283
278
|
<td>HashSet<E></td>
|
|
284
279
|
<td>N/A</td>
|
|
285
280
|
</tr>
|
|
281
|
+
<tr>
|
|
282
|
+
<td>Unordered Map</td>
|
|
283
|
+
<td>std::unordered_map<K, V></td>
|
|
284
|
+
<td>HashMap<K, V></td>
|
|
285
|
+
<td>HashMap<K, V></td>
|
|
286
|
+
<td>defaultdict</td>
|
|
287
|
+
</tr>
|
|
286
288
|
<tr>
|
|
287
289
|
<td>Queue</td>
|
|
288
290
|
<td>std::queue<T></td>
|
|
289
|
-
<td>Queue
|
|
291
|
+
<td>Queue<E></td>
|
|
290
292
|
<td>Queue<E></td>
|
|
291
293
|
<td>N/A</td>
|
|
292
294
|
</tr>
|
|
293
295
|
<tr>
|
|
294
296
|
<td>Priority Queue</td>
|
|
295
297
|
<td>std::priority_queue<T></td>
|
|
296
|
-
<td>PriorityQueue
|
|
298
|
+
<td>PriorityQueue<E></td>
|
|
297
299
|
<td>PriorityQueue<E></td>
|
|
298
300
|
<td>N/A</td>
|
|
299
301
|
</tr>
|
|
300
302
|
<tr>
|
|
301
303
|
<td>Stack</td>
|
|
302
304
|
<td>std::stack<T></td>
|
|
303
|
-
<td>Stack
|
|
305
|
+
<td>Stack<E></td>
|
|
304
306
|
<td>Stack<E></td>
|
|
305
307
|
<td>N/A</td>
|
|
306
308
|
</tr>
|
|
@@ -314,7 +316,7 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
|
314
316
|
<tr>
|
|
315
317
|
<td>Deque</td>
|
|
316
318
|
<td>std::deque<T></td>
|
|
317
|
-
<td>Deque
|
|
319
|
+
<td>Deque<E></td>
|
|
318
320
|
<td>N/A</td>
|
|
319
321
|
<td>N/A</td>
|
|
320
322
|
</tr>
|
|
@@ -342,17 +344,10 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
|
342
344
|
<tr>
|
|
343
345
|
<td>Ordered Dictionary</td>
|
|
344
346
|
<td>N/A</td>
|
|
345
|
-
<td>Map
|
|
347
|
+
<td>Map<K, V></td>
|
|
346
348
|
<td>N/A</td>
|
|
347
349
|
<td>OrderedDict</td>
|
|
348
350
|
</tr>
|
|
349
|
-
<tr>
|
|
350
|
-
<td>Double-Ended Queue (Deque)</td>
|
|
351
|
-
<td>std::deque<T></td>
|
|
352
|
-
<td>Deque</td>
|
|
353
|
-
<td>N/A</td>
|
|
354
|
-
<td>N/A</td>
|
|
355
|
-
</tr>
|
|
356
351
|
<tr>
|
|
357
352
|
<td>Linked Hash Set</td>
|
|
358
353
|
<td>N/A</td>
|
|
@@ -370,21 +365,21 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
|
370
365
|
<tr>
|
|
371
366
|
<td>Sorted Set</td>
|
|
372
367
|
<td>N/A</td>
|
|
373
|
-
<td>AVLTree
|
|
368
|
+
<td>AVLTree</td>
|
|
374
369
|
<td>TreeSet<E></td>
|
|
375
370
|
<td>N/A</td>
|
|
376
371
|
</tr>
|
|
377
372
|
<tr>
|
|
378
373
|
<td>Sorted Map</td>
|
|
379
374
|
<td>N/A</td>
|
|
380
|
-
<td>AVLTree
|
|
375
|
+
<td>AVLTree</td>
|
|
381
376
|
<td>TreeMap<K, V></td>
|
|
382
377
|
<td>N/A</td>
|
|
383
378
|
</tr>
|
|
384
379
|
<tr>
|
|
385
380
|
<td>Tree Set</td>
|
|
386
381
|
<td>std::set</td>
|
|
387
|
-
<td>AVLTree
|
|
382
|
+
<td>AVLTree</td>
|
|
388
383
|
<td>TreeSet<E></td>
|
|
389
384
|
<td>N/A</td>
|
|
390
385
|
</tr>
|
|
@@ -766,8 +761,9 @@ optimal approach to data structure design.</p>
|
|
|
766
761
|
<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>
|
|
767
762
|
<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>
|
|
768
763
|
<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>
|
|
769
|
-
<li><a href="classes/
|
|
764
|
+
<li><a href="classes/HashMap.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Hash<wbr/>Map</span></a></li>
|
|
770
765
|
<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>
|
|
766
|
+
<li><a href="classes/HashTableNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Hash<wbr/>Table<wbr/>Node</span></a></li>
|
|
771
767
|
<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>
|
|
772
768
|
<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>
|
|
773
769
|
<li><a href="classes/LinkedListQueue.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Linked<wbr/>List<wbr/>Queue</span></a></li>
|
|
@@ -791,7 +787,8 @@ optimal approach to data structure design.</p>
|
|
|
791
787
|
<li><a href="classes/SegmentTreeNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Segment<wbr/>Tree<wbr/>Node</span></a></li>
|
|
792
788
|
<li><a href="classes/SinglyLinkedList.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Singly<wbr/>Linked<wbr/>List</span></a></li>
|
|
793
789
|
<li><a href="classes/SinglyLinkedListNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Singly<wbr/>Linked<wbr/>List<wbr/>Node</span></a></li>
|
|
794
|
-
<li><a href="classes/
|
|
790
|
+
<li><a href="classes/SkipList.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Skip<wbr/>List</span></a></li>
|
|
791
|
+
<li><a href="classes/SkipListNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Skip<wbr/>List<wbr/>Node</span></a></li>
|
|
795
792
|
<li><a href="classes/SplayTree.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Splay<wbr/>Tree</span></a></li>
|
|
796
793
|
<li><a href="classes/Stack.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Stack</span></a></li>
|
|
797
794
|
<li><a href="classes/TreeMap.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-128"></use></svg><span>Tree<wbr/>Map</span></a></li>
|
|
@@ -833,6 +830,7 @@ optimal approach to data structure design.</p>
|
|
|
833
830
|
<li><a href="types/Direction.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>Direction</span></a></li>
|
|
834
831
|
<li><a href="types/DummyAny.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>Dummy<wbr/>Any</span></a></li>
|
|
835
832
|
<li><a href="types/EdgeId.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>Edge<wbr/>Id</span></a></li>
|
|
833
|
+
<li><a href="types/HashFunction.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>Hash<wbr/>Function</span></a></li>
|
|
836
834
|
<li><a href="types/HeapOptions.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>Heap<wbr/>Options</span></a></li>
|
|
837
835
|
<li><a href="types/IAVLTreeNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>IAVLTree<wbr/>Node</span></a></li>
|
|
838
836
|
<li><a href="types/IBSTNode.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="#icon-4194304"></use></svg><span>IBSTNode</span></a></li>
|