data-structure-typed 1.21.4 → 1.32.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/.auto-changelog +9 -0
- package/.auto-changelog-template.hbs +36 -0
- package/.eslintrc.js +61 -0
- package/.gitattributes +112 -0
- package/.github/workflows/ci.yml +30 -0
- package/.prettierignore +6 -0
- package/.prettierrc.js +16 -0
- package/CHANGELOG.md +17 -0
- package/CODE-OF-CONDUCT.md +80 -0
- package/COMMANDS.md +28 -0
- package/README.md +147 -95
- package/SECURITY.md +15 -0
- package/coverage/clover.xml +3393 -0
- package/coverage/coverage-final.json +67 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +386 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/aa-tree.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/abstract-binary-tree.ts.html +4966 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/avl-tree.ts.html +1015 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/b-tree.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/binary-indexed-tree.ts.html +313 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/binary-tree.ts.html +226 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/bst.ts.html +1714 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/index.html +296 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/index.ts.html +121 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/rb-tree.ts.html +388 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/segment-tree.ts.html +811 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/splay-tree.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/tree-multiset.ts.html +2185 -0
- package/coverage/lcov-report/src/data-structures/binary-tree/two-three-tree.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/graph/abstract-graph.ts.html +3205 -0
- package/coverage/lcov-report/src/data-structures/graph/directed-graph.ts.html +1495 -0
- package/coverage/lcov-report/src/data-structures/graph/index.html +176 -0
- package/coverage/lcov-report/src/data-structures/graph/index.ts.html +97 -0
- package/coverage/lcov-report/src/data-structures/graph/map-graph.ts.html +472 -0
- package/coverage/lcov-report/src/data-structures/graph/undirected-graph.ts.html +907 -0
- package/coverage/lcov-report/src/data-structures/hash/coordinate-map.ts.html +286 -0
- package/coverage/lcov-report/src/data-structures/hash/coordinate-set.ts.html +253 -0
- package/coverage/lcov-report/src/data-structures/hash/hash-table.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/hash/index.html +206 -0
- package/coverage/lcov-report/src/data-structures/hash/index.ts.html +103 -0
- package/coverage/lcov-report/src/data-structures/hash/pair.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/hash/tree-map.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/hash/tree-set.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/heap/heap.ts.html +721 -0
- package/coverage/lcov-report/src/data-structures/heap/index.html +161 -0
- package/coverage/lcov-report/src/data-structures/heap/index.ts.html +94 -0
- package/coverage/lcov-report/src/data-structures/heap/max-heap.ts.html +178 -0
- package/coverage/lcov-report/src/data-structures/heap/min-heap.ts.html +181 -0
- package/coverage/lcov-report/src/data-structures/index.html +116 -0
- package/coverage/lcov-report/src/data-structures/index.ts.html +118 -0
- package/coverage/lcov-report/src/data-structures/linked-list/doubly-linked-list.ts.html +1804 -0
- package/coverage/lcov-report/src/data-structures/linked-list/index.html +161 -0
- package/coverage/lcov-report/src/data-structures/linked-list/index.ts.html +94 -0
- package/coverage/lcov-report/src/data-structures/linked-list/singly-linked-list.ts.html +1588 -0
- package/coverage/lcov-report/src/data-structures/linked-list/skip-linked-list.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/matrix/index.html +176 -0
- package/coverage/lcov-report/src/data-structures/matrix/index.ts.html +97 -0
- package/coverage/lcov-report/src/data-structures/matrix/matrix.ts.html +166 -0
- package/coverage/lcov-report/src/data-structures/matrix/matrix2d.ts.html +721 -0
- package/coverage/lcov-report/src/data-structures/matrix/navigator.ts.html +448 -0
- package/coverage/lcov-report/src/data-structures/matrix/vector2d.ts.html +1033 -0
- package/coverage/lcov-report/src/data-structures/priority-queue/index.html +161 -0
- package/coverage/lcov-report/src/data-structures/priority-queue/index.ts.html +94 -0
- package/coverage/lcov-report/src/data-structures/priority-queue/max-priority-queue.ts.html +253 -0
- package/coverage/lcov-report/src/data-structures/priority-queue/min-priority-queue.ts.html +256 -0
- package/coverage/lcov-report/src/data-structures/priority-queue/priority-queue.ts.html +1162 -0
- package/coverage/lcov-report/src/data-structures/queue/deque.ts.html +976 -0
- package/coverage/lcov-report/src/data-structures/queue/index.html +146 -0
- package/coverage/lcov-report/src/data-structures/queue/index.ts.html +91 -0
- package/coverage/lcov-report/src/data-structures/queue/queue.ts.html +658 -0
- package/coverage/lcov-report/src/data-structures/stack/index.html +131 -0
- package/coverage/lcov-report/src/data-structures/stack/index.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/stack/stack.ts.html +379 -0
- package/coverage/lcov-report/src/data-structures/tree/index.html +131 -0
- package/coverage/lcov-report/src/data-structures/tree/index.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/tree/tree.ts.html +292 -0
- package/coverage/lcov-report/src/data-structures/trie/index.html +131 -0
- package/coverage/lcov-report/src/data-structures/trie/index.ts.html +88 -0
- package/coverage/lcov-report/src/data-structures/trie/trie.ts.html +760 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/index.ts.html +97 -0
- package/coverage/lcov-report/src/interfaces/index.html +116 -0
- package/coverage/lcov-report/src/interfaces/index.ts.html +130 -0
- package/coverage/lcov-report/src/types/data-structures/abstract-binary-tree.ts.html +235 -0
- package/coverage/lcov-report/src/types/data-structures/bst.ts.html +124 -0
- package/coverage/lcov-report/src/types/data-structures/directed-graph.ts.html +109 -0
- package/coverage/lcov-report/src/types/data-structures/index.html +176 -0
- package/coverage/lcov-report/src/types/data-structures/index.ts.html +130 -0
- package/coverage/lcov-report/src/types/data-structures/rb-tree.ts.html +106 -0
- package/coverage/lcov-report/src/types/index.html +116 -0
- package/coverage/lcov-report/src/types/index.ts.html +94 -0
- package/coverage/lcov-report/src/types/utils/index.html +116 -0
- package/coverage/lcov-report/src/types/utils/index.ts.html +91 -0
- package/coverage/lcov-report/src/utils/index.html +131 -0
- package/coverage/lcov-report/src/utils/index.ts.html +88 -0
- package/coverage/lcov-report/src/utils/utils.ts.html +322 -0
- package/coverage/lcov-report/test/utils/index.html +146 -0
- package/coverage/lcov-report/test/utils/index.ts.html +91 -0
- package/coverage/lcov-report/test/utils/magnitude.ts.html +148 -0
- package/coverage/lcov-report/test/utils/number.ts.html +94 -0
- package/coverage/lcov.info +6676 -0
- package/dist/data-structures/binary-tree/aa-tree.js +6 -2
- package/dist/data-structures/binary-tree/aa-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/abstract-binary-tree.js +398 -672
- package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/avl-tree.js +122 -151
- package/dist/data-structures/binary-tree/avl-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/b-tree.js +6 -2
- package/dist/data-structures/binary-tree/b-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/binary-indexed-tree.js +24 -54
- package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/binary-tree.js +31 -32
- package/dist/data-structures/binary-tree/binary-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/bst.js +266 -208
- package/dist/data-structures/binary-tree/bst.js.map +1 -0
- package/dist/data-structures/binary-tree/index.js +1 -0
- package/dist/data-structures/binary-tree/index.js.map +1 -0
- package/dist/data-structures/binary-tree/rb-tree.js +46 -37
- package/dist/data-structures/binary-tree/rb-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/segment-tree.js +124 -127
- package/dist/data-structures/binary-tree/segment-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/splay-tree.js +6 -2
- package/dist/data-structures/binary-tree/splay-tree.js.map +1 -0
- package/dist/data-structures/binary-tree/tree-multiset.js +227 -354
- package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -0
- package/dist/data-structures/binary-tree/two-three-tree.js +6 -2
- package/dist/data-structures/binary-tree/two-three-tree.js.map +1 -0
- package/dist/data-structures/graph/abstract-graph.js +582 -609
- package/dist/data-structures/graph/abstract-graph.js.map +1 -0
- package/dist/data-structures/graph/directed-graph.js +276 -312
- package/dist/data-structures/graph/directed-graph.js.map +1 -0
- package/dist/data-structures/graph/index.js +1 -0
- package/dist/data-structures/graph/index.js.map +1 -0
- package/dist/data-structures/graph/map-graph.js +88 -100
- package/dist/data-structures/graph/map-graph.js.map +1 -0
- package/dist/data-structures/graph/undirected-graph.js +180 -195
- package/dist/data-structures/graph/undirected-graph.js.map +1 -0
- package/dist/data-structures/hash/coordinate-map.js +46 -58
- package/dist/data-structures/hash/coordinate-map.js.map +1 -0
- package/dist/data-structures/hash/coordinate-set.js +43 -48
- package/dist/data-structures/hash/coordinate-set.js.map +1 -0
- package/dist/data-structures/hash/hash-table.js +6 -2
- package/dist/data-structures/hash/hash-table.js.map +1 -0
- package/dist/data-structures/hash/index.js +1 -0
- package/dist/data-structures/hash/index.js.map +1 -0
- package/dist/data-structures/hash/pair.js +6 -2
- package/dist/data-structures/hash/pair.js.map +1 -0
- package/dist/data-structures/hash/tree-map.js +6 -2
- package/dist/data-structures/hash/tree-map.js.map +1 -0
- package/dist/data-structures/hash/tree-set.js +6 -2
- package/dist/data-structures/hash/tree-set.js.map +1 -0
- package/dist/data-structures/heap/heap.js +83 -120
- package/dist/data-structures/heap/heap.js.map +1 -0
- package/dist/data-structures/heap/index.js +1 -0
- package/dist/data-structures/heap/index.js.map +1 -0
- package/dist/data-structures/heap/max-heap.js +27 -24
- package/dist/data-structures/heap/max-heap.js.map +1 -0
- package/dist/data-structures/heap/min-heap.js +27 -25
- package/dist/data-structures/heap/min-heap.js.map +1 -0
- package/dist/data-structures/index.js +1 -0
- package/dist/data-structures/index.js.map +1 -0
- package/dist/data-structures/linked-list/doubly-linked-list.js +202 -307
- package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -0
- package/dist/data-structures/linked-list/index.js +1 -0
- package/dist/data-structures/linked-list/index.js.map +1 -0
- package/dist/data-structures/linked-list/singly-linked-list.js +223 -251
- package/dist/data-structures/linked-list/singly-linked-list.js.map +1 -0
- package/dist/data-structures/linked-list/skip-linked-list.js +6 -2
- package/dist/data-structures/linked-list/skip-linked-list.js.map +1 -0
- package/dist/data-structures/matrix/index.js +1 -0
- package/dist/data-structures/matrix/index.js.map +1 -0
- package/dist/data-structures/matrix/matrix.js +9 -22
- package/dist/data-structures/matrix/matrix.js.map +1 -0
- package/dist/data-structures/matrix/matrix2d.js +75 -149
- package/dist/data-structures/matrix/matrix2d.js.map +1 -0
- package/dist/data-structures/matrix/navigator.js +38 -46
- package/dist/data-structures/matrix/navigator.js.map +1 -0
- package/dist/data-structures/matrix/vector2d.js +90 -254
- package/dist/data-structures/matrix/vector2d.js.map +1 -0
- package/dist/data-structures/priority-queue/index.js +1 -0
- package/dist/data-structures/priority-queue/index.js.map +1 -0
- package/dist/data-structures/priority-queue/max-priority-queue.js +47 -32
- package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -0
- package/dist/data-structures/priority-queue/min-priority-queue.js +47 -33
- package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -0
- package/dist/data-structures/priority-queue/priority-queue.js +150 -241
- package/dist/data-structures/priority-queue/priority-queue.js.map +1 -0
- package/dist/data-structures/queue/deque.js +130 -162
- package/dist/data-structures/queue/deque.js.map +1 -0
- package/dist/data-structures/queue/index.js +1 -0
- package/dist/data-structures/queue/index.js.map +1 -0
- package/dist/data-structures/queue/queue.js +181 -100
- package/dist/data-structures/queue/queue.js.map +1 -0
- package/dist/data-structures/stack/index.js +1 -0
- package/dist/data-structures/stack/index.js.map +1 -0
- package/dist/data-structures/stack/stack.js +23 -71
- package/dist/data-structures/stack/stack.js.map +1 -0
- package/dist/data-structures/tree/index.js +1 -0
- package/dist/data-structures/tree/index.js.map +1 -0
- package/dist/data-structures/tree/tree.js +46 -33
- package/dist/data-structures/tree/tree.js.map +1 -0
- package/dist/data-structures/trie/index.js +1 -0
- package/dist/data-structures/trie/index.js.map +1 -0
- package/dist/data-structures/trie/trie.js +201 -129
- package/dist/data-structures/trie/trie.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/abstract-binary-tree.js +1 -0
- package/dist/interfaces/abstract-binary-tree.js.map +1 -0
- package/dist/interfaces/abstract-graph.js +1 -0
- package/dist/interfaces/abstract-graph.js.map +1 -0
- package/dist/interfaces/avl-tree.js +1 -0
- package/dist/interfaces/avl-tree.js.map +1 -0
- package/dist/interfaces/binary-tree.js +1 -0
- package/dist/interfaces/binary-tree.js.map +1 -0
- package/dist/interfaces/bst.js +1 -0
- package/dist/interfaces/bst.js.map +1 -0
- package/dist/interfaces/directed-graph.js +1 -0
- package/dist/interfaces/directed-graph.js.map +1 -0
- package/dist/interfaces/doubly-linked-list.js +1 -0
- package/dist/interfaces/doubly-linked-list.js.map +1 -0
- package/dist/interfaces/heap.js +1 -0
- package/dist/interfaces/heap.js.map +1 -0
- package/dist/interfaces/index.js +1 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/navigator.js +1 -0
- package/dist/interfaces/navigator.js.map +1 -0
- package/dist/interfaces/priority-queue.js +1 -0
- package/dist/interfaces/priority-queue.js.map +1 -0
- package/dist/interfaces/rb-tree.js +1 -0
- package/dist/interfaces/rb-tree.js.map +1 -0
- package/dist/interfaces/segment-tree.js +1 -0
- package/dist/interfaces/segment-tree.js.map +1 -0
- package/dist/interfaces/singly-linked-list.js +1 -0
- package/dist/interfaces/singly-linked-list.js.map +1 -0
- package/dist/interfaces/tree-multiset.js +1 -0
- package/dist/interfaces/tree-multiset.js.map +1 -0
- package/dist/interfaces/undirected-graph.js +1 -0
- package/dist/interfaces/undirected-graph.js.map +1 -0
- package/dist/types/data-structures/abstract-binary-tree.js +1 -7
- package/dist/types/data-structures/abstract-binary-tree.js.map +1 -0
- package/dist/types/data-structures/abstract-graph.js +1 -0
- package/dist/types/data-structures/abstract-graph.js.map +1 -0
- package/dist/types/data-structures/avl-tree.js +1 -0
- package/dist/types/data-structures/avl-tree.js.map +1 -0
- package/dist/types/data-structures/binary-tree.js +1 -0
- package/dist/types/data-structures/binary-tree.js.map +1 -0
- package/dist/types/data-structures/bst.js +1 -0
- package/dist/types/data-structures/bst.js.map +1 -0
- package/dist/types/data-structures/directed-graph.js +1 -0
- package/dist/types/data-structures/directed-graph.js.map +1 -0
- package/dist/types/data-structures/doubly-linked-list.js +1 -0
- package/dist/types/data-structures/doubly-linked-list.js.map +1 -0
- package/dist/types/data-structures/heap.js +1 -0
- package/dist/types/data-structures/heap.js.map +1 -0
- package/dist/types/data-structures/index.js +1 -0
- package/dist/types/data-structures/index.js.map +1 -0
- package/dist/types/data-structures/map-graph.js +1 -0
- package/dist/types/data-structures/map-graph.js.map +1 -0
- package/dist/types/data-structures/navigator.js +1 -0
- package/dist/types/data-structures/navigator.js.map +1 -0
- package/dist/types/data-structures/priority-queue.js +1 -0
- package/dist/types/data-structures/priority-queue.js.map +1 -0
- package/dist/types/data-structures/rb-tree.js +1 -0
- package/dist/types/data-structures/rb-tree.js.map +1 -0
- package/dist/types/data-structures/segment-tree.js +1 -0
- package/dist/types/data-structures/segment-tree.js.map +1 -0
- package/dist/types/data-structures/singly-linked-list.js +1 -0
- package/dist/types/data-structures/singly-linked-list.js.map +1 -0
- package/dist/types/data-structures/tree-multiset.js +1 -0
- package/dist/types/data-structures/tree-multiset.js.map +1 -0
- package/dist/types/helpers.js +1 -0
- package/dist/types/helpers.js.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/utils/index.js +1 -0
- package/dist/types/utils/index.js.map +1 -0
- package/dist/types/utils/utils.js +1 -0
- package/dist/types/utils/utils.js.map +1 -0
- package/dist/types/utils/validate-type.js +1 -0
- package/dist/types/utils/validate-type.js.map +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/utils.js +108 -22
- package/dist/utils/utils.js.map +1 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +127 -0
- package/docs/assets/main.js +58 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1367 -0
- package/docs/classes/AVLTree.html +2182 -0
- package/docs/classes/AVLTreeNode.html +399 -0
- package/docs/classes/AaTree.html +202 -0
- package/docs/classes/AbstractBinaryTree.html +1836 -0
- package/docs/classes/AbstractBinaryTreeNode.html +441 -0
- package/docs/classes/AbstractEdge.html +345 -0
- package/docs/classes/AbstractGraph.html +1105 -0
- package/docs/classes/AbstractVertex.html +299 -0
- package/docs/classes/ArrayDeque.html +469 -0
- package/docs/classes/BST.html +2026 -0
- package/docs/classes/BSTNode.html +400 -0
- package/docs/classes/BTree.html +202 -0
- package/docs/classes/BinaryIndexedTree.html +371 -0
- package/docs/classes/BinaryTree.html +1867 -0
- package/docs/classes/BinaryTreeNode.html +399 -0
- package/docs/classes/Character.html +250 -0
- package/docs/classes/CoordinateMap.html +513 -0
- package/docs/classes/CoordinateSet.html +474 -0
- package/docs/classes/Deque.html +1005 -0
- package/docs/classes/DirectedEdge.html +404 -0
- package/docs/classes/DirectedGraph.html +1530 -0
- package/docs/classes/DirectedVertex.html +286 -0
- package/docs/classes/DoublyLinkedList.html +998 -0
- package/docs/classes/DoublyLinkedListNode.html +327 -0
- package/docs/classes/HashTable.html +202 -0
- package/docs/classes/Heap.html +647 -0
- package/docs/classes/HeapItem.html +296 -0
- package/docs/classes/LinkedListQueue.html +884 -0
- package/docs/classes/MapEdge.html +391 -0
- package/docs/classes/MapGraph.html +1583 -0
- package/docs/classes/MapVertex.html +356 -0
- package/docs/classes/Matrix2D.html +532 -0
- package/docs/classes/MatrixNTI2D.html +270 -0
- package/docs/classes/MaxHeap.html +671 -0
- package/docs/classes/MaxPriorityQueue.html +866 -0
- package/docs/classes/MinHeap.html +672 -0
- package/docs/classes/MinPriorityQueue.html +868 -0
- package/docs/classes/Navigator.html +343 -0
- package/docs/classes/ObjectDeque.html +527 -0
- package/docs/classes/Pair.html +202 -0
- package/docs/classes/PriorityQueue.html +790 -0
- package/docs/classes/Queue.html +521 -0
- package/docs/classes/RBTree.html +2024 -0
- package/docs/classes/RBTreeNode.html +431 -0
- package/docs/classes/SegmentTree.html +464 -0
- package/docs/classes/SegmentTreeNode.html +387 -0
- package/docs/classes/SinglyLinkedList.html +830 -0
- package/docs/classes/SinglyLinkedListNode.html +300 -0
- package/docs/classes/SkipLinkedList.html +202 -0
- package/docs/classes/SplayTree.html +202 -0
- package/docs/classes/Stack.html +398 -0
- package/docs/classes/TreeMap.html +202 -0
- package/docs/classes/TreeMultiset.html +2510 -0
- package/docs/classes/TreeMultisetNode.html +447 -0
- package/docs/classes/TreeNode.html +344 -0
- package/docs/classes/TreeSet.html +202 -0
- package/docs/classes/Trie.html +402 -0
- package/docs/classes/TrieNode.html +310 -0
- package/docs/classes/TwoThreeTree.html +202 -0
- package/docs/classes/UndirectedEdge.html +374 -0
- package/docs/classes/UndirectedGraph.html +1285 -0
- package/docs/classes/UndirectedVertex.html +284 -0
- package/docs/classes/Vector2D.html +835 -0
- package/docs/enums/CP.html +211 -0
- package/docs/enums/FamilyPosition.html +239 -0
- package/docs/enums/LoopType.html +212 -0
- package/docs/enums/RBColor.html +204 -0
- package/docs/enums/TopologicalProperty.html +211 -0
- package/docs/functions/arrayRemove.html +208 -0
- package/docs/functions/isThunk.html +186 -0
- package/docs/functions/toThunk.html +186 -0
- package/docs/functions/trampoline.html +186 -0
- package/docs/functions/trampolineAsync.html +186 -0
- package/docs/functions/uuidV4.html +181 -0
- package/docs/index.html +693 -0
- package/docs/interfaces/IAVLTree.html +1245 -0
- package/docs/interfaces/IAbstractBinaryTree.html +1101 -0
- package/docs/interfaces/IAbstractBinaryTreeNode.html +335 -0
- package/docs/interfaces/IAbstractGraph.html +433 -0
- package/docs/interfaces/IBST.html +1245 -0
- package/docs/interfaces/IDirectedGraph.html +570 -0
- package/docs/interfaces/IRBTree.html +1247 -0
- package/docs/interfaces/IUNDirectedGraph.html +463 -0
- package/docs/modules.html +328 -0
- package/docs/types/AVLTreeNodeNested.html +182 -0
- package/docs/types/AVLTreeOptions.html +180 -0
- package/docs/types/AbstractBinaryTreeNodeNested.html +182 -0
- package/docs/types/AbstractBinaryTreeNodeProperties.html +182 -0
- package/docs/types/AbstractBinaryTreeNodeProperty.html +182 -0
- package/docs/types/AbstractBinaryTreeOptions.html +182 -0
- package/docs/types/BSTComparator.html +192 -0
- package/docs/types/BSTNodeNested.html +182 -0
- package/docs/types/BSTOptions.html +182 -0
- package/docs/types/BinaryTreeDeletedResult.html +189 -0
- package/docs/types/BinaryTreeNodeId.html +177 -0
- package/docs/types/BinaryTreeNodeNested.html +182 -0
- package/docs/types/BinaryTreeNodePropertyName.html +177 -0
- package/docs/types/BinaryTreeOptions.html +180 -0
- package/docs/types/DFSOrderPattern.html +177 -0
- package/docs/types/DijkstraResult.html +199 -0
- package/docs/types/Direction.html +177 -0
- package/docs/types/DummyAny.html +190 -0
- package/docs/types/EdgeId.html +177 -0
- package/docs/types/HeapOptions.html +198 -0
- package/docs/types/IAVLTreeNode.html +184 -0
- package/docs/types/IBSTNode.html +184 -0
- package/docs/types/IBinaryTree.html +182 -0
- package/docs/types/IBinaryTreeNode.html +184 -0
- package/docs/types/IRBTreeNode.html +184 -0
- package/docs/types/ITreeMultiset.html +182 -0
- package/docs/types/ITreeMultisetNode.html +184 -0
- package/docs/types/KeyValueObject.html +182 -0
- package/docs/types/KeyValueObjectWithId.html +184 -0
- package/docs/types/MapGraphCoordinate.html +177 -0
- package/docs/types/NavigatorParams.html +211 -0
- package/docs/types/NodeOrPropertyName.html +177 -0
- package/docs/types/NonNumberNonObjectButDefined.html +177 -0
- package/docs/types/ObjectWithNonNumberId.html +184 -0
- package/docs/types/ObjectWithNumberId.html +184 -0
- package/docs/types/ObjectWithoutId.html +177 -0
- package/docs/types/PriorityQueueComparator.html +197 -0
- package/docs/types/PriorityQueueDFSOrderPattern.html +177 -0
- package/docs/types/PriorityQueueOptions.html +191 -0
- package/docs/types/RBTreeNodeNested.html +182 -0
- package/docs/types/RBTreeOptions.html +180 -0
- package/docs/types/RestrictValById.html +177 -0
- package/docs/types/SegmentTreeNodeVal.html +177 -0
- package/docs/types/SpecifyOptional.html +184 -0
- package/docs/types/Thunk.html +185 -0
- package/docs/types/ToThunkFn.html +185 -0
- package/docs/types/TopologicalStatus.html +177 -0
- package/docs/types/TreeMultisetNodeNested.html +182 -0
- package/docs/types/TreeMultisetOptions.html +180 -0
- package/docs/types/TrlAsyncFn.html +190 -0
- package/docs/types/TrlFn.html +190 -0
- package/docs/types/Turning.html +177 -0
- package/docs/types/VertexId.html +177 -0
- package/docs/variables/THUNK_SYMBOL.html +177 -0
- package/jest.config.js +7 -0
- package/lib/data-structures/binary-tree/aa-tree.js +2 -0
- package/{dist → lib}/data-structures/binary-tree/abstract-binary-tree.d.ts +194 -22
- package/lib/data-structures/binary-tree/abstract-binary-tree.js +1291 -0
- package/{dist → lib}/data-structures/binary-tree/avl-tree.d.ts +12 -12
- package/lib/data-structures/binary-tree/avl-tree.js +311 -0
- package/lib/data-structures/binary-tree/b-tree.js +2 -0
- package/lib/data-structures/binary-tree/binary-indexed-tree.js +69 -0
- package/lib/data-structures/binary-tree/binary-tree.js +35 -0
- package/{dist → lib}/data-structures/binary-tree/bst.d.ts +19 -8
- package/lib/data-structures/binary-tree/bst.js +551 -0
- package/lib/data-structures/binary-tree/index.js +12 -0
- package/{dist → lib}/data-structures/binary-tree/rb-tree.d.ts +0 -6
- package/lib/data-structures/binary-tree/rb-tree.js +22 -0
- package/lib/data-structures/binary-tree/segment-tree.js +210 -0
- package/lib/data-structures/binary-tree/splay-tree.js +2 -0
- package/{dist → lib}/data-structures/binary-tree/tree-multiset.d.ts +20 -23
- package/lib/data-structures/binary-tree/tree-multiset.js +673 -0
- package/lib/data-structures/binary-tree/two-three-tree.js +2 -0
- package/lib/data-structures/graph/abstract-graph.js +918 -0
- package/lib/data-structures/graph/directed-graph.js +416 -0
- package/lib/data-structures/graph/index.js +4 -0
- package/lib/data-structures/graph/map-graph.js +105 -0
- package/lib/data-structures/graph/undirected-graph.js +246 -0
- package/lib/data-structures/hash/coordinate-map.js +61 -0
- package/lib/data-structures/hash/coordinate-set.js +51 -0
- package/lib/data-structures/hash/hash-table.js +2 -0
- package/lib/data-structures/hash/index.js +6 -0
- package/lib/data-structures/hash/pair.js +2 -0
- package/lib/data-structures/hash/tree-map.js +2 -0
- package/lib/data-structures/hash/tree-set.js +2 -0
- package/lib/data-structures/heap/heap.js +152 -0
- package/lib/data-structures/heap/index.js +3 -0
- package/lib/data-structures/heap/max-heap.js +26 -0
- package/lib/data-structures/heap/min-heap.js +27 -0
- package/lib/data-structures/index.js +11 -0
- package/{dist → lib}/data-structures/linked-list/doubly-linked-list.d.ts +5 -5
- package/lib/data-structures/linked-list/doubly-linked-list.js +521 -0
- package/lib/data-structures/linked-list/index.js +3 -0
- package/{dist → lib}/data-structures/linked-list/singly-linked-list.d.ts +6 -5
- package/lib/data-structures/linked-list/singly-linked-list.js +443 -0
- package/lib/data-structures/linked-list/skip-linked-list.js +2 -0
- package/lib/data-structures/matrix/index.js +4 -0
- package/lib/data-structures/matrix/matrix.js +24 -0
- package/lib/data-structures/matrix/matrix2d.js +195 -0
- package/lib/data-structures/matrix/navigator.js +101 -0
- package/lib/data-structures/matrix/vector2d.js +287 -0
- package/lib/data-structures/priority-queue/index.js +3 -0
- package/lib/data-structures/priority-queue/max-priority-queue.js +39 -0
- package/lib/data-structures/priority-queue/min-priority-queue.js +40 -0
- package/lib/data-structures/priority-queue/priority-queue.js +317 -0
- package/{dist → lib}/data-structures/queue/deque.d.ts +45 -0
- package/lib/data-structures/queue/deque.js +270 -0
- package/lib/data-structures/queue/index.js +2 -0
- package/{dist → lib}/data-structures/queue/queue.d.ts +47 -13
- package/lib/data-structures/queue/queue.js +165 -0
- package/lib/data-structures/stack/index.js +1 -0
- package/lib/data-structures/stack/stack.js +87 -0
- package/lib/data-structures/tree/index.js +1 -0
- package/lib/data-structures/tree/tree.js +56 -0
- package/lib/data-structures/trie/index.js +1 -0
- package/lib/data-structures/trie/trie.js +205 -0
- package/lib/index.js +4 -0
- package/{dist → lib}/interfaces/avl-tree.d.ts +1 -9
- package/lib/interfaces/binary-tree.d.ts +4 -0
- package/{dist → lib}/interfaces/bst.d.ts +1 -2
- package/lib/interfaces/heap.js +1 -0
- package/lib/interfaces/index.js +15 -0
- package/lib/interfaces/navigator.d.ts +1 -0
- package/lib/interfaces/navigator.js +1 -0
- package/lib/interfaces/priority-queue.d.ts +1 -0
- package/lib/interfaces/priority-queue.js +1 -0
- package/{dist → lib}/interfaces/rb-tree.d.ts +1 -2
- package/lib/interfaces/rb-tree.js +1 -0
- package/lib/interfaces/segment-tree.d.ts +1 -0
- package/lib/interfaces/segment-tree.js +1 -0
- package/lib/interfaces/singly-linked-list.d.ts +1 -0
- package/lib/interfaces/singly-linked-list.js +1 -0
- package/lib/interfaces/tree-multiset.d.ts +5 -0
- package/lib/interfaces/tree-multiset.js +1 -0
- package/lib/interfaces/undirected-graph.js +1 -0
- package/{dist → lib}/types/data-structures/abstract-binary-tree.d.ts +1 -1
- package/lib/types/data-structures/abstract-binary-tree.js +22 -0
- package/lib/types/data-structures/abstract-graph.js +1 -0
- package/{dist → lib}/types/data-structures/avl-tree.d.ts +1 -1
- package/lib/types/data-structures/avl-tree.js +1 -0
- package/lib/types/data-structures/binary-tree.js +1 -0
- package/lib/types/data-structures/bst.js +6 -0
- package/lib/types/data-structures/directed-graph.js +6 -0
- package/lib/types/data-structures/doubly-linked-list.d.ts +1 -0
- package/lib/types/data-structures/doubly-linked-list.js +1 -0
- package/lib/types/data-structures/heap.js +1 -0
- package/lib/types/data-structures/index.js +15 -0
- package/lib/types/data-structures/map-graph.js +1 -0
- package/lib/types/data-structures/navigator.js +1 -0
- package/lib/types/data-structures/priority-queue.js +1 -0
- package/lib/types/data-structures/rb-tree.js +5 -0
- package/lib/types/data-structures/segment-tree.js +1 -0
- package/lib/types/data-structures/singly-linked-list.d.ts +1 -0
- package/lib/types/data-structures/singly-linked-list.js +1 -0
- package/lib/types/data-structures/tree-multiset.js +1 -0
- package/lib/types/helpers.d.ts +1 -0
- package/lib/types/helpers.js +1 -0
- package/lib/types/index.js +3 -0
- package/lib/types/utils/index.js +2 -0
- package/{dist → lib}/types/utils/utils.d.ts +1 -1
- package/lib/types/utils/utils.js +1 -0
- package/{dist → lib}/types/utils/validate-type.d.ts +1 -1
- package/lib/types/utils/validate-type.js +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/utils/utils.js +57 -0
- package/package.json +150 -56
- package/rename_clear_files.sh +29 -0
- package/test/integration/avl-tree.test.ts +111 -0
- package/test/integration/bst.test.ts +371 -0
- package/test/integration/heap.test.js +19 -0
- package/test/integration/index.html +44 -0
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +111 -0
- package/test/unit/data-structures/binary-tree/bst.test.ts +371 -0
- package/test/unit/data-structures/binary-tree/overall.test.ts +57 -0
- package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +405 -0
- package/test/unit/data-structures/graph/abstract-graph.test.ts +5 -0
- package/test/unit/data-structures/graph/directed-graph.test.ts +517 -0
- package/test/unit/data-structures/graph/index.ts +2 -0
- package/test/unit/data-structures/graph/map-graph.test.ts +46 -0
- package/test/unit/data-structures/graph/overall.test.ts +50 -0
- package/test/unit/data-structures/graph/undirected-graph.test.ts +60 -0
- package/test/unit/data-structures/heap/heap.test.ts +56 -0
- package/test/unit/data-structures/heap/max-heap.test.ts +42 -0
- package/test/unit/data-structures/heap/min-heap.test.ts +81 -0
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +365 -0
- package/test/unit/data-structures/linked-list/index.ts +4 -0
- package/test/unit/data-structures/linked-list/linked-list.test.ts +37 -0
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +401 -0
- package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +13 -0
- package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +108 -0
- package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +105 -0
- package/test/unit/data-structures/priority-queue/priority-queue.test.ts +27 -0
- package/test/unit/data-structures/queue/queue.test.ts +36 -0
- package/test/utils/index.ts +2 -0
- package/test/utils/magnitude.ts +21 -0
- package/test/utils/number.ts +3 -0
- package/tsconfig.build.json +33 -0
- package/tsconfig.json +38 -0
- package/umd/bundle.min.js +3 -0
- package/umd/bundle.min.js.map +1 -0
- package/webpack.config.js +28 -0
- package/dist/bundle.js +0 -2
- package/dist/interfaces/binary-tree.d.ts +0 -6
- package/dist/interfaces/tree-multiset.d.ts +0 -7
- /package/{dist → lib}/data-structures/binary-tree/aa-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/b-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/binary-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/segment-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/splay-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/binary-tree/two-three-tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/graph/abstract-graph.d.ts +0 -0
- /package/{dist → lib}/data-structures/graph/directed-graph.d.ts +0 -0
- /package/{dist → lib}/data-structures/graph/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/graph/map-graph.d.ts +0 -0
- /package/{dist → lib}/data-structures/graph/undirected-graph.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/coordinate-map.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/coordinate-set.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/hash-table.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/pair.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/tree-map.d.ts +0 -0
- /package/{dist → lib}/data-structures/hash/tree-set.d.ts +0 -0
- /package/{dist → lib}/data-structures/heap/heap.d.ts +0 -0
- /package/{dist → lib}/data-structures/heap/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/heap/max-heap.d.ts +0 -0
- /package/{dist → lib}/data-structures/heap/min-heap.d.ts +0 -0
- /package/{dist → lib}/data-structures/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/linked-list/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/linked-list/skip-linked-list.d.ts +0 -0
- /package/{dist → lib}/data-structures/matrix/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/matrix/matrix.d.ts +0 -0
- /package/{dist → lib}/data-structures/matrix/matrix2d.d.ts +0 -0
- /package/{dist → lib}/data-structures/matrix/navigator.d.ts +0 -0
- /package/{dist → lib}/data-structures/matrix/vector2d.d.ts +0 -0
- /package/{dist → lib}/data-structures/priority-queue/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
- /package/{dist → lib}/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
- /package/{dist → lib}/data-structures/priority-queue/priority-queue.d.ts +0 -0
- /package/{dist → lib}/data-structures/queue/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/stack/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/stack/stack.d.ts +0 -0
- /package/{dist → lib}/data-structures/tree/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/tree/tree.d.ts +0 -0
- /package/{dist → lib}/data-structures/trie/index.d.ts +0 -0
- /package/{dist → lib}/data-structures/trie/trie.d.ts +0 -0
- /package/{dist → lib}/index.d.ts +0 -0
- /package/{dist → lib}/interfaces/abstract-binary-tree.d.ts +0 -0
- /package/{dist/interfaces/doubly-linked-list.d.ts → lib/interfaces/abstract-binary-tree.js} +0 -0
- /package/{dist → lib}/interfaces/abstract-graph.d.ts +0 -0
- /package/{dist/interfaces/heap.d.ts → lib/interfaces/abstract-graph.js} +0 -0
- /package/{dist/interfaces/navigator.d.ts → lib/interfaces/avl-tree.js} +0 -0
- /package/{dist/interfaces/priority-queue.d.ts → lib/interfaces/binary-tree.js} +0 -0
- /package/{dist/interfaces/segment-tree.d.ts → lib/interfaces/bst.js} +0 -0
- /package/{dist → lib}/interfaces/directed-graph.d.ts +0 -0
- /package/{dist/interfaces/singly-linked-list.d.ts → lib/interfaces/directed-graph.js} +0 -0
- /package/{dist/types/data-structures → lib/interfaces}/doubly-linked-list.d.ts +0 -0
- /package/{dist/types/data-structures/singly-linked-list.d.ts → lib/interfaces/doubly-linked-list.js} +0 -0
- /package/{dist/types/helpers.d.ts → lib/interfaces/heap.d.ts} +0 -0
- /package/{dist → lib}/interfaces/index.d.ts +0 -0
- /package/{dist → lib}/interfaces/undirected-graph.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/abstract-graph.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/binary-tree.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/bst.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/directed-graph.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/heap.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/index.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/map-graph.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/navigator.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/priority-queue.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/rb-tree.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/segment-tree.d.ts +0 -0
- /package/{dist → lib}/types/data-structures/tree-multiset.d.ts +0 -0
- /package/{dist → lib}/types/index.d.ts +0 -0
- /package/{dist → lib}/types/utils/index.d.ts +0 -0
- /package/{dist → lib}/utils/index.d.ts +0 -0
- /package/{dist → lib}/utils/utils.d.ts +0 -0
- /package/{dist/bundle.js.LICENSE.txt → umd/bundle.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-binary-tree.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/abstract-binary-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,145 +1,126 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __values = (this && this.__values) || function(o) {
|
|
18
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
19
|
+
if (m) return m.call(o);
|
|
20
|
+
if (o && typeof o.length === "number") return {
|
|
21
|
+
next: function () {
|
|
22
|
+
if (o && i >= o.length) o = void 0;
|
|
23
|
+
return { value: o && o[i++], done: !o };
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
27
|
+
};
|
|
2
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
29
|
exports.AVLTree = exports.AVLTreeNode = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* @license MIT License
|
|
10
|
-
*/
|
|
11
|
-
const bst_1 = require("./bst");
|
|
12
|
-
class AVLTreeNode extends bst_1.BSTNode {
|
|
13
|
-
constructor(id, val) {
|
|
14
|
-
super(id, val);
|
|
30
|
+
var bst_1 = require("./bst");
|
|
31
|
+
var AVLTreeNode = (function (_super) {
|
|
32
|
+
__extends(AVLTreeNode, _super);
|
|
33
|
+
function AVLTreeNode(id, val) {
|
|
34
|
+
return _super.call(this, id, val) || this;
|
|
15
35
|
}
|
|
16
|
-
|
|
36
|
+
return AVLTreeNode;
|
|
37
|
+
}(bst_1.BSTNode));
|
|
17
38
|
exports.AVLTreeNode = AVLTreeNode;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* constructor of the AVLTree class. It allows you to customize the behavior of the AVL tree by providing different
|
|
23
|
-
* options.
|
|
24
|
-
*/
|
|
25
|
-
constructor(options) {
|
|
26
|
-
super(options);
|
|
39
|
+
var AVLTree = (function (_super) {
|
|
40
|
+
__extends(AVLTree, _super);
|
|
41
|
+
function AVLTree(options) {
|
|
42
|
+
return _super.call(this, options) || this;
|
|
27
43
|
}
|
|
28
|
-
|
|
29
|
-
* The function creates a new AVL tree node with the given id and value.
|
|
30
|
-
* @param {BinaryTreeNodeId} id - The `id` parameter is the identifier for the binary tree node. It is used to uniquely
|
|
31
|
-
* identify each node in the tree.
|
|
32
|
-
* @param [val] - The `val` parameter is an optional value that can be assigned to the node. It represents the value
|
|
33
|
-
* that will be stored in the node.
|
|
34
|
-
* @returns a new AVLTreeNode object with the specified id and value.
|
|
35
|
-
*/
|
|
36
|
-
createNode(id, val) {
|
|
44
|
+
AVLTree.prototype.createNode = function (id, val) {
|
|
37
45
|
return new AVLTreeNode(id, val);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
* @param {BinaryTreeNodeId} id - The `id` parameter is the identifier of the binary tree node that we want to add.
|
|
42
|
-
* @param [val] - The `val` parameter is an optional value that can be assigned to the node being added. It is of type
|
|
43
|
-
* `N['val']`, which means it should be of the same type as the `val` property of the nodes in the binary tree.
|
|
44
|
-
* @returns The method is returning the inserted node, or null or undefined if the insertion was not successful.
|
|
45
|
-
*/
|
|
46
|
-
add(id, val) {
|
|
47
|
-
// TODO support node as a param
|
|
48
|
-
const inserted = super.add(id, val);
|
|
46
|
+
};
|
|
47
|
+
AVLTree.prototype.add = function (id, val) {
|
|
48
|
+
var inserted = _super.prototype.add.call(this, id, val);
|
|
49
49
|
if (inserted)
|
|
50
|
-
this.
|
|
50
|
+
this._balancePath(inserted);
|
|
51
51
|
return inserted;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
*/
|
|
63
|
-
remove(id, isUpdateAllLeftSum) {
|
|
64
|
-
const deletedResults = super.remove(id, isUpdateAllLeftSum);
|
|
65
|
-
for (const { needBalanced } of deletedResults) {
|
|
66
|
-
if (needBalanced) {
|
|
67
|
-
this.balancePath(needBalanced);
|
|
52
|
+
};
|
|
53
|
+
AVLTree.prototype.remove = function (id, isUpdateAllLeftSum) {
|
|
54
|
+
var e_1, _a;
|
|
55
|
+
var deletedResults = _super.prototype.remove.call(this, id, isUpdateAllLeftSum);
|
|
56
|
+
try {
|
|
57
|
+
for (var deletedResults_1 = __values(deletedResults), deletedResults_1_1 = deletedResults_1.next(); !deletedResults_1_1.done; deletedResults_1_1 = deletedResults_1.next()) {
|
|
58
|
+
var needBalanced = deletedResults_1_1.value.needBalanced;
|
|
59
|
+
if (needBalanced) {
|
|
60
|
+
this._balancePath(needBalanced);
|
|
61
|
+
}
|
|
68
62
|
}
|
|
69
63
|
}
|
|
64
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
65
|
+
finally {
|
|
66
|
+
try {
|
|
67
|
+
if (deletedResults_1_1 && !deletedResults_1_1.done && (_a = deletedResults_1.return)) _a.call(deletedResults_1);
|
|
68
|
+
}
|
|
69
|
+
finally { if (e_1) throw e_1.error; }
|
|
70
|
+
}
|
|
70
71
|
return deletedResults;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
* height of its right subtree.
|
|
75
|
-
* @param node - The parameter "node" is of type N, which represents a node in an AVL tree.
|
|
76
|
-
* @returns The balance factor of the given AVL tree node.
|
|
77
|
-
*/
|
|
78
|
-
balanceFactor(node) {
|
|
79
|
-
if (!node.right) // node has no right subtree
|
|
72
|
+
};
|
|
73
|
+
AVLTree.prototype._balanceFactor = function (node) {
|
|
74
|
+
if (!node.right)
|
|
80
75
|
return -node.height;
|
|
81
|
-
else if (!node.left)
|
|
76
|
+
else if (!node.left)
|
|
82
77
|
return +node.height;
|
|
83
78
|
else
|
|
84
79
|
return node.right.height - node.left.height;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
* @param node - The parameter `node` is an AVLTreeNode object, which represents a node in an AVL tree.
|
|
89
|
-
*/
|
|
90
|
-
updateHeight(node) {
|
|
91
|
-
if (!node.left && !node.right) // node is a leaf
|
|
80
|
+
};
|
|
81
|
+
AVLTree.prototype._updateHeight = function (node) {
|
|
82
|
+
if (!node.left && !node.right)
|
|
92
83
|
node.height = 0;
|
|
93
84
|
else if (!node.left) {
|
|
94
|
-
|
|
95
|
-
const rightHeight = node.right ? node.right.height : 0;
|
|
85
|
+
var rightHeight = node.right ? node.right.height : 0;
|
|
96
86
|
node.height = 1 + rightHeight;
|
|
97
87
|
}
|
|
98
|
-
else if (!node.right)
|
|
88
|
+
else if (!node.right)
|
|
99
89
|
node.height = 1 + node.left.height;
|
|
100
90
|
else
|
|
101
91
|
node.height = 1 + Math.max(node.right.height, node.left.height);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const path = this.getPathToRoot(node);
|
|
110
|
-
for (let i = path.length - 1; i >= 0; i--) {
|
|
111
|
-
const A = path[i];
|
|
112
|
-
this.updateHeight(A);
|
|
113
|
-
switch (this.balanceFactor(A)) {
|
|
92
|
+
};
|
|
93
|
+
AVLTree.prototype._balancePath = function (node) {
|
|
94
|
+
var path = this.getPathToRoot(node, false);
|
|
95
|
+
for (var i = 0; i < path.length; i++) {
|
|
96
|
+
var A = path[i];
|
|
97
|
+
this._updateHeight(A);
|
|
98
|
+
switch (this._balanceFactor(A)) {
|
|
114
99
|
case -2:
|
|
115
100
|
if (A && A.left) {
|
|
116
|
-
if (this.
|
|
117
|
-
this.
|
|
101
|
+
if (this._balanceFactor(A.left) <= 0) {
|
|
102
|
+
this._balanceLL(A);
|
|
118
103
|
}
|
|
119
104
|
else {
|
|
120
|
-
this.
|
|
105
|
+
this._balanceLR(A);
|
|
121
106
|
}
|
|
122
107
|
}
|
|
123
108
|
break;
|
|
124
109
|
case +2:
|
|
125
110
|
if (A && A.right) {
|
|
126
|
-
if (this.
|
|
127
|
-
this.
|
|
111
|
+
if (this._balanceFactor(A.right) >= 0) {
|
|
112
|
+
this._balanceRR(A);
|
|
128
113
|
}
|
|
129
114
|
else {
|
|
130
|
-
this.
|
|
115
|
+
this._balanceRL(A);
|
|
131
116
|
}
|
|
132
117
|
}
|
|
133
118
|
}
|
|
134
119
|
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
*/
|
|
140
|
-
balanceLL(A) {
|
|
141
|
-
const parentOfA = A.parent;
|
|
142
|
-
const B = A.left; // A is left-heavy and B is left-heavy
|
|
120
|
+
};
|
|
121
|
+
AVLTree.prototype._balanceLL = function (A) {
|
|
122
|
+
var parentOfA = A.parent;
|
|
123
|
+
var B = A.left;
|
|
143
124
|
A.parent = B;
|
|
144
125
|
if (B && B.right) {
|
|
145
126
|
B.right.parent = A;
|
|
@@ -160,23 +141,19 @@ class AVLTree extends bst_1.BST {
|
|
|
160
141
|
}
|
|
161
142
|
}
|
|
162
143
|
if (B) {
|
|
163
|
-
A.left = B.right;
|
|
164
|
-
B.right = A;
|
|
144
|
+
A.left = B.right;
|
|
145
|
+
B.right = A;
|
|
165
146
|
}
|
|
166
|
-
this.
|
|
147
|
+
this._updateHeight(A);
|
|
167
148
|
if (B)
|
|
168
|
-
this.
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
balanceLR(A) {
|
|
175
|
-
const parentOfA = A.parent;
|
|
176
|
-
const B = A.left; // A is left-heavy
|
|
177
|
-
let C = null;
|
|
149
|
+
this._updateHeight(B);
|
|
150
|
+
};
|
|
151
|
+
AVLTree.prototype._balanceLR = function (A) {
|
|
152
|
+
var parentOfA = A.parent;
|
|
153
|
+
var B = A.left;
|
|
154
|
+
var C = null;
|
|
178
155
|
if (B) {
|
|
179
|
-
C = B.right;
|
|
156
|
+
C = B.right;
|
|
180
157
|
}
|
|
181
158
|
if (A)
|
|
182
159
|
A.parent = C;
|
|
@@ -206,23 +183,19 @@ class AVLTree extends bst_1.BST {
|
|
|
206
183
|
}
|
|
207
184
|
}
|
|
208
185
|
if (C) {
|
|
209
|
-
A.left = C.right;
|
|
186
|
+
A.left = C.right;
|
|
210
187
|
if (B)
|
|
211
|
-
B.right = C.left;
|
|
188
|
+
B.right = C.left;
|
|
212
189
|
C.left = B;
|
|
213
190
|
C.right = A;
|
|
214
191
|
}
|
|
215
|
-
this.
|
|
216
|
-
B && this.
|
|
217
|
-
C && this.
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
*/
|
|
223
|
-
balanceRR(A) {
|
|
224
|
-
const parentOfA = A.parent;
|
|
225
|
-
const B = A.right; // A is right-heavy and B is right-heavy
|
|
192
|
+
this._updateHeight(A);
|
|
193
|
+
B && this._updateHeight(B);
|
|
194
|
+
C && this._updateHeight(C);
|
|
195
|
+
};
|
|
196
|
+
AVLTree.prototype._balanceRR = function (A) {
|
|
197
|
+
var parentOfA = A.parent;
|
|
198
|
+
var B = A.right;
|
|
226
199
|
A.parent = B;
|
|
227
200
|
if (B) {
|
|
228
201
|
if (B.left) {
|
|
@@ -245,22 +218,18 @@ class AVLTree extends bst_1.BST {
|
|
|
245
218
|
}
|
|
246
219
|
}
|
|
247
220
|
if (B) {
|
|
248
|
-
A.right = B.left;
|
|
221
|
+
A.right = B.left;
|
|
249
222
|
B.left = A;
|
|
250
223
|
}
|
|
251
|
-
this.
|
|
252
|
-
B && this.
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
balanceRL(A) {
|
|
259
|
-
const parentOfA = A.parent;
|
|
260
|
-
const B = A.right; // A is right-heavy
|
|
261
|
-
let C = null;
|
|
224
|
+
this._updateHeight(A);
|
|
225
|
+
B && this._updateHeight(B);
|
|
226
|
+
};
|
|
227
|
+
AVLTree.prototype._balanceRL = function (A) {
|
|
228
|
+
var parentOfA = A.parent;
|
|
229
|
+
var B = A.right;
|
|
230
|
+
var C = null;
|
|
262
231
|
if (B) {
|
|
263
|
-
C = B.left;
|
|
232
|
+
C = B.left;
|
|
264
233
|
}
|
|
265
234
|
A.parent = C;
|
|
266
235
|
if (B)
|
|
@@ -289,16 +258,18 @@ class AVLTree extends bst_1.BST {
|
|
|
289
258
|
}
|
|
290
259
|
}
|
|
291
260
|
if (C)
|
|
292
|
-
A.right = C.left;
|
|
261
|
+
A.right = C.left;
|
|
293
262
|
if (B && C)
|
|
294
|
-
B.left = C.right;
|
|
263
|
+
B.left = C.right;
|
|
295
264
|
if (C)
|
|
296
265
|
C.left = A;
|
|
297
266
|
if (C)
|
|
298
267
|
C.right = B;
|
|
299
|
-
this.
|
|
300
|
-
B && this.
|
|
301
|
-
C && this.
|
|
302
|
-
}
|
|
303
|
-
|
|
268
|
+
this._updateHeight(A);
|
|
269
|
+
B && this._updateHeight(B);
|
|
270
|
+
C && this._updateHeight(C);
|
|
271
|
+
};
|
|
272
|
+
return AVLTree;
|
|
273
|
+
}(bst_1.BST));
|
|
304
274
|
exports.AVLTree = AVLTree;
|
|
275
|
+
//# sourceMappingURL=avl-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avl-tree.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/avl-tree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BTree = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
var BTree = (function () {
|
|
5
|
+
function BTree() {
|
|
6
|
+
}
|
|
7
|
+
return BTree;
|
|
8
|
+
}());
|
|
6
9
|
exports.BTree = BTree;
|
|
10
|
+
//# sourceMappingURL=b-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"b-tree.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/b-tree.ts"],"names":[],"mappings":";;;AAAA;IAAA;IAAoB,CAAC;IAAD,YAAC;AAAD,CAAC,AAArB,IAAqB;AAAR,sBAAK"}
|
|
@@ -1,73 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BinaryIndexedTree = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* @author Tyler Zeng
|
|
8
|
-
* @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
|
|
9
|
-
* @license MIT License
|
|
10
|
-
*/
|
|
11
|
-
class BinaryIndexedTree {
|
|
12
|
-
/**
|
|
13
|
-
* The constructor initializes an array with a specified length and fills it with zeros.
|
|
14
|
-
* @param {number} n - The parameter `n` represents the size of the array that will be used to store the sum tree. The
|
|
15
|
-
* sum tree is a binary tree data structure used to efficiently calculate the sum of a range of elements in an array.
|
|
16
|
-
* The size of the sum tree array is `n + 1` because
|
|
17
|
-
*/
|
|
18
|
-
constructor(n) {
|
|
4
|
+
var BinaryIndexedTree = (function () {
|
|
5
|
+
function BinaryIndexedTree(n) {
|
|
19
6
|
this._sumTree = new Array(n + 1).fill(0);
|
|
20
7
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* @param {number} delta - The "delta" parameter represents the change in value that needs to be added to the element
|
|
33
|
-
* at index "i" in the "_sumTree" array.
|
|
34
|
-
*/
|
|
35
|
-
update(i, delta) {
|
|
8
|
+
Object.defineProperty(BinaryIndexedTree.prototype, "sumTree", {
|
|
9
|
+
get: function () {
|
|
10
|
+
return this._sumTree;
|
|
11
|
+
},
|
|
12
|
+
enumerable: false,
|
|
13
|
+
configurable: true
|
|
14
|
+
});
|
|
15
|
+
BinaryIndexedTree.lowBit = function (x) {
|
|
16
|
+
return x & -x;
|
|
17
|
+
};
|
|
18
|
+
BinaryIndexedTree.prototype.update = function (i, delta) {
|
|
36
19
|
while (i < this._sumTree.length) {
|
|
37
20
|
this._sumTree[i] += delta;
|
|
38
21
|
i += BinaryIndexedTree.lowBit(i);
|
|
39
22
|
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* @param {number} i - The parameter "i" in the function "getPrefixSum" represents the index of the element in the
|
|
44
|
-
* array for which we want to calculate the prefix sum.
|
|
45
|
-
* @returns The function `getPrefixSum` returns the prefix sum of the elements in the binary indexed tree up to index
|
|
46
|
-
* `i`.
|
|
47
|
-
*/
|
|
48
|
-
getPrefixSum(i) {
|
|
49
|
-
let sum = 0;
|
|
23
|
+
};
|
|
24
|
+
BinaryIndexedTree.prototype.getPrefixSum = function (i) {
|
|
25
|
+
var sum = 0;
|
|
50
26
|
while (i > 0) {
|
|
51
27
|
sum += this._sumTree[i];
|
|
52
28
|
i -= BinaryIndexedTree.lowBit(i);
|
|
53
29
|
}
|
|
54
30
|
return sum;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
* The function `getRangeSum` calculates the sum of a range of numbers in an array.
|
|
58
|
-
* @param {number} start - The start parameter is the starting index of the range for which we want to calculate the
|
|
59
|
-
* sum.
|
|
60
|
-
* @param {number} end - The "end" parameter represents the ending index of the range for which we want to calculate
|
|
61
|
-
* the sum.
|
|
62
|
-
* @returns the sum of the elements in the range specified by the start and end indices.
|
|
63
|
-
*/
|
|
64
|
-
getRangeSum(start, end) {
|
|
31
|
+
};
|
|
32
|
+
BinaryIndexedTree.prototype.getRangeSum = function (start, end) {
|
|
65
33
|
if (!(0 <= start && start <= end && end <= this._sumTree.length))
|
|
66
34
|
throw 'Index out of bounds';
|
|
67
35
|
return this.getPrefixSum(end) - this.getPrefixSum(start);
|
|
68
|
-
}
|
|
69
|
-
_setSumTree(value) {
|
|
36
|
+
};
|
|
37
|
+
BinaryIndexedTree.prototype._setSumTree = function (value) {
|
|
70
38
|
this._sumTree = value;
|
|
71
|
-
}
|
|
72
|
-
|
|
39
|
+
};
|
|
40
|
+
return BinaryIndexedTree;
|
|
41
|
+
}());
|
|
73
42
|
exports.BinaryIndexedTree = BinaryIndexedTree;
|
|
43
|
+
//# sourceMappingURL=binary-indexed-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-indexed-tree.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/binary-indexed-tree.ts"],"names":[],"mappings":";;;AAOA;IAOE,2BAAY,CAAS;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAID,sBAAI,sCAAO;aAAX;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;;;OAAA;IAEM,wBAAM,GAAb,UAAc,CAAS;QACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAChB,CAAC;IAUD,kCAAM,GAAN,UAAO,CAAS,EAAE,KAAa;QAC7B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;YAC1B,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;IACH,CAAC;IASD,wCAAY,GAAZ,UAAa,CAAS;QACpB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,EAAE;YACZ,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAUD,uCAAW,GAAX,UAAY,KAAa,EAAE,GAAW;QACpC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,qBAAqB,CAAC;QAC9F,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAES,uCAAW,GAArB,UAAsB,KAAe;QACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IACH,wBAAC;AAAD,CAAC,AApED,IAoEC;AApEY,8CAAiB"}
|
|
@@ -1,40 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
9
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
18
|
exports.BinaryTree = exports.BinaryTreeNode = void 0;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
var abstract_binary_tree_1 = require("./abstract-binary-tree");
|
|
20
|
+
var BinaryTreeNode = (function (_super) {
|
|
21
|
+
__extends(BinaryTreeNode, _super);
|
|
22
|
+
function BinaryTreeNode(id, val) {
|
|
23
|
+
return _super.call(this, id, val) || this;
|
|
15
24
|
}
|
|
16
|
-
|
|
25
|
+
return BinaryTreeNode;
|
|
26
|
+
}(abstract_binary_tree_1.AbstractBinaryTreeNode));
|
|
17
27
|
exports.BinaryTreeNode = BinaryTreeNode;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* constructor of the `BinaryTree` class. It allows you to customize the behavior of the binary tree by providing
|
|
23
|
-
* different configuration options.
|
|
24
|
-
*/
|
|
25
|
-
constructor(options) {
|
|
26
|
-
super(options);
|
|
28
|
+
var BinaryTree = (function (_super) {
|
|
29
|
+
__extends(BinaryTree, _super);
|
|
30
|
+
function BinaryTree(options) {
|
|
31
|
+
return _super.call(this, options) || this;
|
|
27
32
|
}
|
|
28
|
-
|
|
29
|
-
* The function creates a new binary tree node with an optional value.
|
|
30
|
-
* @param {BinaryTreeNodeId} id - The `id` parameter is the identifier for the binary tree node. It is of type
|
|
31
|
-
* `BinaryTreeNodeId`, which represents the unique identifier for each node in the binary tree.
|
|
32
|
-
* @param [val] - The `val` parameter is an optional value that can be assigned to the node. It represents the value
|
|
33
|
-
* stored in the node.
|
|
34
|
-
* @returns a new instance of a BinaryTreeNode with the specified id and value.
|
|
35
|
-
*/
|
|
36
|
-
createNode(id, val) {
|
|
33
|
+
BinaryTree.prototype.createNode = function (id, val) {
|
|
37
34
|
return new BinaryTreeNode(id, val);
|
|
38
|
-
}
|
|
39
|
-
|
|
35
|
+
};
|
|
36
|
+
return BinaryTree;
|
|
37
|
+
}(abstract_binary_tree_1.AbstractBinaryTree));
|
|
40
38
|
exports.BinaryTree = BinaryTree;
|
|
39
|
+
//# sourceMappingURL=binary-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/binary-tree.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AASA,+DAAoF;AAGpF;IACU,kCAAmC;IAG3C,wBAAY,EAAoB,EAAE,GAAO;eACvC,kBAAM,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC;IACH,qBAAC;AAAD,CAAC,AAPD,CACU,6CAAsB,GAM/B;AAPY,wCAAc;AAS3B;IACU,8BAAqB;IAS7B,oBAAY,OAA2B;eACrC,kBAAM,OAAO,CAAC;IAChB,CAAC;IAUD,+BAAU,GAAV,UAAW,EAAoB,EAAE,GAAc;QAC7C,OAAO,IAAI,cAAc,CAAc,EAAE,EAAE,GAAG,CAAM,CAAC;IACvD,CAAC;IACH,iBAAC;AAAD,CAAC,AAzBD,CACU,yCAAkB,GAwB3B;AAzBY,gCAAU"}
|