data-structure-typed 1.32.2 → 1.33.0
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/.eslintrc.json +58 -0
- package/.idea/data-structure-typed.iml +19 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.prettierrc +16 -0
- package/.travis.yml +17 -0
- package/CHANGELOG.md +1 -1
- package/README.md +366 -76
- package/coverage/coverage-final.json +4 -4
- package/docs/index.html +260 -9
- package/package.json +50 -18
- package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +46 -1
- package/.eslintrc.js +0 -61
- package/.prettierrc.js +0 -16
- package/coverage/clover.xml +0 -3393
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -386
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/data-structures/binary-tree/aa-tree.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/binary-tree/abstract-binary-tree.ts.html +0 -4978
- package/coverage/lcov-report/src/data-structures/binary-tree/avl-tree.ts.html +0 -1015
- package/coverage/lcov-report/src/data-structures/binary-tree/b-tree.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/binary-tree/binary-indexed-tree.ts.html +0 -313
- package/coverage/lcov-report/src/data-structures/binary-tree/binary-tree.ts.html +0 -226
- package/coverage/lcov-report/src/data-structures/binary-tree/bst.ts.html +0 -1696
- package/coverage/lcov-report/src/data-structures/binary-tree/index.html +0 -296
- package/coverage/lcov-report/src/data-structures/binary-tree/index.ts.html +0 -121
- package/coverage/lcov-report/src/data-structures/binary-tree/rb-tree.ts.html +0 -388
- package/coverage/lcov-report/src/data-structures/binary-tree/segment-tree.ts.html +0 -811
- package/coverage/lcov-report/src/data-structures/binary-tree/splay-tree.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/binary-tree/tree-multiset.ts.html +0 -2185
- package/coverage/lcov-report/src/data-structures/binary-tree/two-three-tree.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/graph/abstract-graph.ts.html +0 -3205
- package/coverage/lcov-report/src/data-structures/graph/directed-graph.ts.html +0 -1495
- package/coverage/lcov-report/src/data-structures/graph/index.html +0 -176
- package/coverage/lcov-report/src/data-structures/graph/index.ts.html +0 -97
- package/coverage/lcov-report/src/data-structures/graph/map-graph.ts.html +0 -472
- package/coverage/lcov-report/src/data-structures/graph/undirected-graph.ts.html +0 -907
- package/coverage/lcov-report/src/data-structures/hash/coordinate-map.ts.html +0 -286
- package/coverage/lcov-report/src/data-structures/hash/coordinate-set.ts.html +0 -253
- package/coverage/lcov-report/src/data-structures/hash/hash-table.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/hash/index.html +0 -206
- package/coverage/lcov-report/src/data-structures/hash/index.ts.html +0 -103
- package/coverage/lcov-report/src/data-structures/hash/pair.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/hash/tree-map.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/hash/tree-set.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/heap/heap.ts.html +0 -721
- package/coverage/lcov-report/src/data-structures/heap/index.html +0 -161
- package/coverage/lcov-report/src/data-structures/heap/index.ts.html +0 -94
- package/coverage/lcov-report/src/data-structures/heap/max-heap.ts.html +0 -178
- package/coverage/lcov-report/src/data-structures/heap/min-heap.ts.html +0 -181
- package/coverage/lcov-report/src/data-structures/index.html +0 -116
- package/coverage/lcov-report/src/data-structures/index.ts.html +0 -118
- package/coverage/lcov-report/src/data-structures/linked-list/doubly-linked-list.ts.html +0 -1804
- package/coverage/lcov-report/src/data-structures/linked-list/index.html +0 -161
- package/coverage/lcov-report/src/data-structures/linked-list/index.ts.html +0 -94
- package/coverage/lcov-report/src/data-structures/linked-list/singly-linked-list.ts.html +0 -1588
- package/coverage/lcov-report/src/data-structures/linked-list/skip-linked-list.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/matrix/index.html +0 -176
- package/coverage/lcov-report/src/data-structures/matrix/index.ts.html +0 -97
- package/coverage/lcov-report/src/data-structures/matrix/matrix.ts.html +0 -166
- package/coverage/lcov-report/src/data-structures/matrix/matrix2d.ts.html +0 -721
- package/coverage/lcov-report/src/data-structures/matrix/navigator.ts.html +0 -448
- package/coverage/lcov-report/src/data-structures/matrix/vector2d.ts.html +0 -1033
- package/coverage/lcov-report/src/data-structures/priority-queue/index.html +0 -161
- package/coverage/lcov-report/src/data-structures/priority-queue/index.ts.html +0 -94
- package/coverage/lcov-report/src/data-structures/priority-queue/max-priority-queue.ts.html +0 -253
- package/coverage/lcov-report/src/data-structures/priority-queue/min-priority-queue.ts.html +0 -256
- package/coverage/lcov-report/src/data-structures/priority-queue/priority-queue.ts.html +0 -1162
- package/coverage/lcov-report/src/data-structures/queue/deque.ts.html +0 -976
- package/coverage/lcov-report/src/data-structures/queue/index.html +0 -146
- package/coverage/lcov-report/src/data-structures/queue/index.ts.html +0 -91
- package/coverage/lcov-report/src/data-structures/queue/queue.ts.html +0 -658
- package/coverage/lcov-report/src/data-structures/stack/index.html +0 -131
- package/coverage/lcov-report/src/data-structures/stack/index.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/stack/stack.ts.html +0 -379
- package/coverage/lcov-report/src/data-structures/tree/index.html +0 -131
- package/coverage/lcov-report/src/data-structures/tree/index.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/tree/tree.ts.html +0 -292
- package/coverage/lcov-report/src/data-structures/trie/index.html +0 -131
- package/coverage/lcov-report/src/data-structures/trie/index.ts.html +0 -88
- package/coverage/lcov-report/src/data-structures/trie/trie.ts.html +0 -760
- package/coverage/lcov-report/src/index.html +0 -116
- package/coverage/lcov-report/src/index.ts.html +0 -97
- package/coverage/lcov-report/src/interfaces/index.html +0 -116
- package/coverage/lcov-report/src/interfaces/index.ts.html +0 -130
- package/coverage/lcov-report/src/types/data-structures/abstract-binary-tree.ts.html +0 -235
- package/coverage/lcov-report/src/types/data-structures/bst.ts.html +0 -124
- package/coverage/lcov-report/src/types/data-structures/directed-graph.ts.html +0 -109
- package/coverage/lcov-report/src/types/data-structures/index.html +0 -176
- package/coverage/lcov-report/src/types/data-structures/index.ts.html +0 -130
- package/coverage/lcov-report/src/types/data-structures/rb-tree.ts.html +0 -106
- package/coverage/lcov-report/src/types/index.html +0 -116
- package/coverage/lcov-report/src/types/index.ts.html +0 -94
- package/coverage/lcov-report/src/types/utils/index.html +0 -116
- package/coverage/lcov-report/src/types/utils/index.ts.html +0 -91
- package/coverage/lcov-report/src/utils/index.html +0 -131
- package/coverage/lcov-report/src/utils/index.ts.html +0 -88
- package/coverage/lcov-report/src/utils/utils.ts.html +0 -322
- package/coverage/lcov-report/test/utils/index.html +0 -146
- package/coverage/lcov-report/test/utils/index.ts.html +0 -91
- package/coverage/lcov-report/test/utils/magnitude.ts.html +0 -148
- package/coverage/lcov-report/test/utils/number.ts.html +0 -94
- package/coverage/lcov.info +0 -6676
- package/docs/assets/highlight.css +0 -127
- package/docs/assets/main.js +0 -58
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1367
- package/docs/classes/AVLTree.html +0 -2182
- package/docs/classes/AVLTreeNode.html +0 -399
- package/docs/classes/AaTree.html +0 -202
- package/docs/classes/AbstractBinaryTree.html +0 -1836
- package/docs/classes/AbstractBinaryTreeNode.html +0 -441
- package/docs/classes/AbstractEdge.html +0 -345
- package/docs/classes/AbstractGraph.html +0 -1105
- package/docs/classes/AbstractVertex.html +0 -299
- package/docs/classes/ArrayDeque.html +0 -469
- package/docs/classes/BST.html +0 -2026
- package/docs/classes/BSTNode.html +0 -400
- package/docs/classes/BTree.html +0 -202
- package/docs/classes/BinaryIndexedTree.html +0 -371
- package/docs/classes/BinaryTree.html +0 -1867
- package/docs/classes/BinaryTreeNode.html +0 -399
- package/docs/classes/Character.html +0 -250
- package/docs/classes/CoordinateMap.html +0 -513
- package/docs/classes/CoordinateSet.html +0 -474
- package/docs/classes/Deque.html +0 -1005
- package/docs/classes/DirectedEdge.html +0 -404
- package/docs/classes/DirectedGraph.html +0 -1530
- package/docs/classes/DirectedVertex.html +0 -286
- package/docs/classes/DoublyLinkedList.html +0 -998
- package/docs/classes/DoublyLinkedListNode.html +0 -327
- package/docs/classes/HashTable.html +0 -202
- package/docs/classes/Heap.html +0 -647
- package/docs/classes/HeapItem.html +0 -296
- package/docs/classes/LinkedListQueue.html +0 -884
- package/docs/classes/MapEdge.html +0 -391
- package/docs/classes/MapGraph.html +0 -1583
- package/docs/classes/MapVertex.html +0 -356
- package/docs/classes/Matrix2D.html +0 -532
- package/docs/classes/MatrixNTI2D.html +0 -270
- package/docs/classes/MaxHeap.html +0 -671
- package/docs/classes/MaxPriorityQueue.html +0 -866
- package/docs/classes/MinHeap.html +0 -672
- package/docs/classes/MinPriorityQueue.html +0 -868
- package/docs/classes/Navigator.html +0 -343
- package/docs/classes/ObjectDeque.html +0 -527
- package/docs/classes/Pair.html +0 -202
- package/docs/classes/PriorityQueue.html +0 -790
- package/docs/classes/Queue.html +0 -521
- package/docs/classes/RBTree.html +0 -2024
- package/docs/classes/RBTreeNode.html +0 -431
- package/docs/classes/SegmentTree.html +0 -464
- package/docs/classes/SegmentTreeNode.html +0 -387
- package/docs/classes/SinglyLinkedList.html +0 -830
- package/docs/classes/SinglyLinkedListNode.html +0 -300
- package/docs/classes/SkipLinkedList.html +0 -202
- package/docs/classes/SplayTree.html +0 -202
- package/docs/classes/Stack.html +0 -398
- package/docs/classes/TreeMap.html +0 -202
- package/docs/classes/TreeMultiset.html +0 -2510
- package/docs/classes/TreeMultisetNode.html +0 -447
- package/docs/classes/TreeNode.html +0 -344
- package/docs/classes/TreeSet.html +0 -202
- package/docs/classes/Trie.html +0 -402
- package/docs/classes/TrieNode.html +0 -310
- package/docs/classes/TwoThreeTree.html +0 -202
- package/docs/classes/UndirectedEdge.html +0 -374
- package/docs/classes/UndirectedGraph.html +0 -1285
- package/docs/classes/UndirectedVertex.html +0 -284
- package/docs/classes/Vector2D.html +0 -835
- package/docs/enums/CP.html +0 -211
- package/docs/enums/FamilyPosition.html +0 -239
- package/docs/enums/LoopType.html +0 -212
- package/docs/enums/RBColor.html +0 -204
- package/docs/enums/TopologicalProperty.html +0 -211
- package/docs/functions/arrayRemove.html +0 -208
- package/docs/functions/isThunk.html +0 -186
- package/docs/functions/toThunk.html +0 -186
- package/docs/functions/trampoline.html +0 -186
- package/docs/functions/trampolineAsync.html +0 -186
- package/docs/functions/uuidV4.html +0 -181
- package/docs/interfaces/IAVLTree.html +0 -1245
- package/docs/interfaces/IAbstractBinaryTree.html +0 -1101
- package/docs/interfaces/IAbstractBinaryTreeNode.html +0 -335
- package/docs/interfaces/IAbstractGraph.html +0 -433
- package/docs/interfaces/IBST.html +0 -1245
- package/docs/interfaces/IDirectedGraph.html +0 -570
- package/docs/interfaces/IRBTree.html +0 -1247
- package/docs/interfaces/IUNDirectedGraph.html +0 -463
- package/docs/types/AVLTreeNodeNested.html +0 -182
- package/docs/types/AVLTreeOptions.html +0 -180
- package/docs/types/AbstractBinaryTreeNodeNested.html +0 -182
- package/docs/types/AbstractBinaryTreeNodeProperties.html +0 -182
- package/docs/types/AbstractBinaryTreeNodeProperty.html +0 -182
- package/docs/types/AbstractBinaryTreeOptions.html +0 -182
- package/docs/types/BSTComparator.html +0 -192
- package/docs/types/BSTNodeNested.html +0 -182
- package/docs/types/BSTOptions.html +0 -182
- package/docs/types/BinaryTreeDeletedResult.html +0 -189
- package/docs/types/BinaryTreeNodeId.html +0 -177
- package/docs/types/BinaryTreeNodeNested.html +0 -182
- package/docs/types/BinaryTreeNodePropertyName.html +0 -177
- package/docs/types/BinaryTreeOptions.html +0 -180
- package/docs/types/DFSOrderPattern.html +0 -177
- package/docs/types/DijkstraResult.html +0 -199
- package/docs/types/Direction.html +0 -177
- package/docs/types/DummyAny.html +0 -190
- package/docs/types/EdgeId.html +0 -177
- package/docs/types/HeapOptions.html +0 -198
- package/docs/types/IAVLTreeNode.html +0 -184
- package/docs/types/IBSTNode.html +0 -184
- package/docs/types/IBinaryTree.html +0 -182
- package/docs/types/IBinaryTreeNode.html +0 -184
- package/docs/types/IRBTreeNode.html +0 -184
- package/docs/types/ITreeMultiset.html +0 -182
- package/docs/types/ITreeMultisetNode.html +0 -184
- package/docs/types/KeyValueObject.html +0 -182
- package/docs/types/KeyValueObjectWithId.html +0 -184
- package/docs/types/MapGraphCoordinate.html +0 -177
- package/docs/types/NavigatorParams.html +0 -211
- package/docs/types/NodeOrPropertyName.html +0 -177
- package/docs/types/NonNumberNonObjectButDefined.html +0 -177
- package/docs/types/ObjectWithNonNumberId.html +0 -184
- package/docs/types/ObjectWithNumberId.html +0 -184
- package/docs/types/ObjectWithoutId.html +0 -177
- package/docs/types/PriorityQueueComparator.html +0 -197
- package/docs/types/PriorityQueueDFSOrderPattern.html +0 -177
- package/docs/types/PriorityQueueOptions.html +0 -191
- package/docs/types/RBTreeNodeNested.html +0 -182
- package/docs/types/RBTreeOptions.html +0 -180
- package/docs/types/RestrictValById.html +0 -177
- package/docs/types/SegmentTreeNodeVal.html +0 -177
- package/docs/types/SpecifyOptional.html +0 -184
- package/docs/types/Thunk.html +0 -185
- package/docs/types/ToThunkFn.html +0 -185
- package/docs/types/TopologicalStatus.html +0 -177
- package/docs/types/TreeMultisetNodeNested.html +0 -182
- package/docs/types/TreeMultisetOptions.html +0 -180
- package/docs/types/TrlAsyncFn.html +0 -190
- package/docs/types/TrlFn.html +0 -190
- package/docs/types/Turning.html +0 -177
- package/docs/types/VertexId.html +0 -177
- package/docs/variables/THUNK_SYMBOL.html +0 -177
- /package/{CODE-OF-CONDUCT.md → CODE_OF_CONDUCT.md} +0 -0
package/docs/index.html
CHANGED
|
@@ -18,17 +18,16 @@
|
|
|
18
18
|
<img src="https://img.shields.io/badge/branches-97.54%25-brightgreen.svg?style=flat" alt="Branches">
|
|
19
19
|
<img src="https://aleen42.github.io/badges/src/npm.svg" alt="npm">
|
|
20
20
|
<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 & TypeScript
|
|
22
|
-
<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),
|
|
23
|
-
|
|
24
|
-
Tarjan's Algorithm.</p>
|
|
21
|
+
<a id="md:brief" class="tsd-anchor"></a><h2><a href="#md:brief">Brief</a></h2><p>Data Structures of Javascript & TypeScript.</p>
|
|
22
|
+
<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,
|
|
23
|
+
Floyd-Warshall Algorithm, Tarjan's Algorithm.</p>
|
|
25
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>
|
|
26
25
|
</code><button>Copy</button></pre>
|
|
27
26
|
<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>
|
|
28
27
|
</code><button>Copy</button></pre>
|
|
29
|
-
<a id="md:cdn" class="tsd-anchor"></a><h3><a href="#md:cdn">CDN</a></h3><pre><code class="language-html"><span class="hl-4"><</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">"https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js"</span><span class="hl-4">></</span><span class="hl-5">script</span><span class="hl-4">></span>
|
|
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"><</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">"https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js"</span><span class="hl-4">></</span><span class="hl-5">script</span><span class="hl-4">></span>
|
|
30
29
|
</code><button>Copy</button></pre>
|
|
31
|
-
<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><span class="hl-9">Heap</span><span class="hl-1"
|
|
30
|
+
<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>
|
|
32
31
|
</code><button>Copy</button></pre>
|
|
33
32
|
<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="">
|
|
34
33
|
<img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/examples/videos/webp_output/binary-tree-dfs-in-order.webp" alt="">
|
|
@@ -40,9 +39,9 @@ Tarjan's Algorithm.</p>
|
|
|
40
39
|
<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>
|
|
41
40
|
<p><a href="https://vivid-algorithm.vercel.app">Live Examples</a></p>
|
|
42
41
|
<p><a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a></p>
|
|
43
|
-
<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-1"> </span><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">'data-structure-typed'</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-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">// null</span><br/><span class="hl-1"> </span><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-1"> </span><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-1"> </span><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><span class="hl-14">BSTNode</span><span class="hl-1"><{ </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"> }>>();</span><br/><span class="hl-1"> </span><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-1"> </span><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/><span class="hl-1"> </span><br/><span class="hl-1"> </span><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/><span class="hl-1"> </span><br/><span class="hl-1"> </span><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>
|
|
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">'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><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"><</span><span class="hl-14">BSTNode</span><span class="hl-1"><{ </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"> }>>();</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>
|
|
44
43
|
</code><button>Copy</button></pre>
|
|
45
|
-
<a id="md:js" class="tsd-anchor"></a><h4><a href="#md:js">JS</a></h4><pre><code class="language-js"><span class="hl-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-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-12">1</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-1"> </span><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-1"> </span><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-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">// null</span><br/><span class="hl-1"> </span><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-1"> </span><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-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-12">11</span><span class="hl-1">; </span><span class="hl-13">// true</span><br/><span class="hl-1"> </span><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/><span class="hl-1"> </span><br/><span class="hl-1"> </span><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-1"> </span><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-1"> </span><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/><span class="hl-1"> </span><br/><span class="hl-1"> </span><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/><span class="hl-1"> </span><br/><span class="hl-1"> </span><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/><span class="hl-1"> </span><br/><span class="hl-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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-1"> </span><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>
|
|
44
|
+
<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>
|
|
46
45
|
</code><button>Copy</button></pre>
|
|
47
46
|
<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-11">import</span><span class="hl-1"> {</span><span class="hl-10">AVLTree</span><span class="hl-1">} </span><span class="hl-11">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-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
47
|
</code><button>Copy</button></pre>
|
|
@@ -227,7 +226,9 @@ Tarjan's Algorithm.</p>
|
|
|
227
226
|
</tbody>
|
|
228
227
|
</table>
|
|
229
228
|
|
|
230
|
-
<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 -> BST -> AVLTree -> TreeMultiset), you can seamlessly
|
|
229
|
+
<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 -> BST -> AVLTree -> TreeMultiset), you can seamlessly
|
|
230
|
+
inherit the existing data structures to implement the customized ones you need. Object-oriented design stands as the
|
|
231
|
+
optimal approach to data structure design.</p>
|
|
231
232
|
<a id="md:complexities" class="tsd-anchor"></a><h2><a href="#md:complexities">Complexities</a></h2><a id="md:performance-of-big-o" class="tsd-anchor"></a><h3><a href="#md:performance-of-big-o">performance of Big O</a></h3><table>
|
|
232
233
|
<thead>
|
|
233
234
|
<tr>
|
|
@@ -481,6 +482,256 @@ Tarjan's Algorithm.</p>
|
|
|
481
482
|
<td>k - length of longest key</td>
|
|
482
483
|
</tr>
|
|
483
484
|
</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<T></td>
|
|
498
|
+
<td>ArrayList<E></td>
|
|
499
|
+
<td>list</td>
|
|
500
|
+
</tr>
|
|
501
|
+
<tr>
|
|
502
|
+
<td>Linked List</td>
|
|
503
|
+
<td>std::list<T></td>
|
|
504
|
+
<td>LinkedList<E></td>
|
|
505
|
+
<td>deque</td>
|
|
506
|
+
</tr>
|
|
507
|
+
<tr>
|
|
508
|
+
<td>Set</td>
|
|
509
|
+
<td>std::set<T></td>
|
|
510
|
+
<td>HashSet<E></td>
|
|
511
|
+
<td>set</td>
|
|
512
|
+
</tr>
|
|
513
|
+
<tr>
|
|
514
|
+
<td>Map</td>
|
|
515
|
+
<td>std::map<K, V></td>
|
|
516
|
+
<td>HashMap<K, V></td>
|
|
517
|
+
<td>dict</td>
|
|
518
|
+
</tr>
|
|
519
|
+
<tr>
|
|
520
|
+
<td>Stack</td>
|
|
521
|
+
<td>std::stack<T></td>
|
|
522
|
+
<td>Stack<E></td>
|
|
523
|
+
<td>N/A</td>
|
|
524
|
+
</tr>
|
|
525
|
+
<tr>
|
|
526
|
+
<td>Queue</td>
|
|
527
|
+
<td>std::queue<T></td>
|
|
528
|
+
<td>LinkedList<E></td>
|
|
529
|
+
<td>N/A</td>
|
|
530
|
+
</tr>
|
|
531
|
+
<tr>
|
|
532
|
+
<td>Priority Queue</td>
|
|
533
|
+
<td>std::priority_queue<T></td>
|
|
534
|
+
<td>PriorityQueue<E></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<T></td>
|
|
546
|
+
<td>N/A</td>
|
|
547
|
+
<td>N/A</td>
|
|
548
|
+
</tr>
|
|
549
|
+
<tr>
|
|
550
|
+
<td>Multiset</td>
|
|
551
|
+
<td>std::multiset<T></td>
|
|
552
|
+
<td>N/A</td>
|
|
553
|
+
<td>N/A</td>
|
|
554
|
+
</tr>
|
|
555
|
+
<tr>
|
|
556
|
+
<td>Multimap</td>
|
|
557
|
+
<td>std::multimap<K, V></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<T></td>
|
|
564
|
+
<td>HashSet<E></td>
|
|
565
|
+
<td>N/A</td>
|
|
566
|
+
</tr>
|
|
567
|
+
<tr>
|
|
568
|
+
<td>Unordered Map</td>
|
|
569
|
+
<td>std::unordered_map<K, V></td>
|
|
570
|
+
<td>HashMap<K, V></td>
|
|
571
|
+
<td>N/A</td>
|
|
572
|
+
</tr>
|
|
573
|
+
<tr>
|
|
574
|
+
<td>Bitset</td>
|
|
575
|
+
<td>std::bitset<N></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<T></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<E></td>
|
|
637
|
+
<td>N/A</td>
|
|
638
|
+
</tr>
|
|
639
|
+
<tr>
|
|
640
|
+
<td>Linked Hash Map</td>
|
|
641
|
+
<td>N/A</td>
|
|
642
|
+
<td>LinkedHashMap<K, V></td>
|
|
643
|
+
<td>N/A</td>
|
|
644
|
+
</tr>
|
|
645
|
+
<tr>
|
|
646
|
+
<td>Sorted Set</td>
|
|
647
|
+
<td>N/A</td>
|
|
648
|
+
<td>TreeSet<E></td>
|
|
649
|
+
<td>N/A</td>
|
|
650
|
+
</tr>
|
|
651
|
+
<tr>
|
|
652
|
+
<td>Sorted Map</td>
|
|
653
|
+
<td>N/A</td>
|
|
654
|
+
<td>TreeMap<K, V></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<T></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<K, V></td>
|
|
684
|
+
<td>N/A</td>
|
|
685
|
+
<td>N/A</td>
|
|
686
|
+
</tr>
|
|
687
|
+
<tr>
|
|
688
|
+
<td>N/A</td>
|
|
689
|
+
<td>TreeSet<E></td>
|
|
690
|
+
<td>TreeSet<E></td>
|
|
691
|
+
<td>N/A</td>
|
|
692
|
+
</tr>
|
|
693
|
+
<tr>
|
|
694
|
+
<td>N/A</td>
|
|
695
|
+
<td>TreeMap<K, V></td>
|
|
696
|
+
<td>TreeMap<K, V></td>
|
|
697
|
+
<td>N/A</td>
|
|
698
|
+
</tr>
|
|
699
|
+
<tr>
|
|
700
|
+
<td>N/A</td>
|
|
701
|
+
<td>LinkedBlockingQueue<E></td>
|
|
702
|
+
<td>N/A</td>
|
|
703
|
+
<td>N/A</td>
|
|
704
|
+
</tr>
|
|
705
|
+
<tr>
|
|
706
|
+
<td>N/A</td>
|
|
707
|
+
<td>ConcurrentHashMap<K, V></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>
|
|
484
735
|
</table></div></div>
|
|
485
736
|
<div class="col-sidebar">
|
|
486
737
|
<div class="page-menu">
|