data-structure-typed 1.34.7 → 1.34.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CHANGELOG.md +1 -1
  3. package/CONTRIBUTING.md +0 -0
  4. package/README.md +8 -8
  5. package/dist/data-structures/binary-tree/aa-tree.js +2 -5
  6. package/dist/data-structures/binary-tree/aa-tree.js.map +1 -1
  7. package/dist/data-structures/binary-tree/abstract-binary-tree.js +314 -457
  8. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  9. package/dist/data-structures/binary-tree/avl-tree.js +64 -90
  10. package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
  11. package/dist/data-structures/binary-tree/b-tree.js +2 -5
  12. package/dist/data-structures/binary-tree/b-tree.js.map +1 -1
  13. package/dist/data-structures/binary-tree/binary-indexed-tree.js +17 -22
  14. package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
  15. package/dist/data-structures/binary-tree/binary-tree.js +12 -31
  16. package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
  17. package/dist/data-structures/binary-tree/bst.js +157 -244
  18. package/dist/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/data-structures/binary-tree/rb-tree.js +20 -44
  20. package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
  21. package/dist/data-structures/binary-tree/segment-tree.js +80 -122
  22. package/dist/data-structures/binary-tree/segment-tree.js.map +1 -1
  23. package/dist/data-structures/binary-tree/splay-tree.js +2 -5
  24. package/dist/data-structures/binary-tree/splay-tree.js.map +1 -1
  25. package/dist/data-structures/binary-tree/tree-multiset.js +168 -239
  26. package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
  27. package/dist/data-structures/binary-tree/two-three-tree.js +2 -5
  28. package/dist/data-structures/binary-tree/two-three-tree.js.map +1 -1
  29. package/dist/data-structures/graph/abstract-graph.js +351 -585
  30. package/dist/data-structures/graph/abstract-graph.js.map +1 -1
  31. package/dist/data-structures/graph/directed-graph.js +152 -282
  32. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  33. package/dist/data-structures/graph/map-graph.js +47 -88
  34. package/dist/data-structures/graph/map-graph.js.map +1 -1
  35. package/dist/data-structures/graph/undirected-graph.js +91 -180
  36. package/dist/data-structures/graph/undirected-graph.js.map +1 -1
  37. package/dist/data-structures/hash/coordinate-map.js +23 -45
  38. package/dist/data-structures/hash/coordinate-map.js.map +1 -1
  39. package/dist/data-structures/hash/coordinate-set.js +20 -42
  40. package/dist/data-structures/hash/coordinate-set.js.map +1 -1
  41. package/dist/data-structures/hash/hash-map.js +85 -247
  42. package/dist/data-structures/hash/hash-map.js.map +1 -1
  43. package/dist/data-structures/hash/hash-table.js +87 -128
  44. package/dist/data-structures/hash/hash-table.js.map +1 -1
  45. package/dist/data-structures/hash/pair.js +2 -5
  46. package/dist/data-structures/hash/pair.js.map +1 -1
  47. package/dist/data-structures/hash/tree-map.js +2 -5
  48. package/dist/data-structures/hash/tree-map.js.map +1 -1
  49. package/dist/data-structures/hash/tree-set.js +2 -5
  50. package/dist/data-structures/hash/tree-set.js.map +1 -1
  51. package/dist/data-structures/heap/heap.js +56 -80
  52. package/dist/data-structures/heap/heap.js.map +1 -1
  53. package/dist/data-structures/heap/max-heap.js +8 -26
  54. package/dist/data-structures/heap/max-heap.js.map +1 -1
  55. package/dist/data-structures/heap/min-heap.js +8 -26
  56. package/dist/data-structures/heap/min-heap.js.map +1 -1
  57. package/dist/data-structures/linked-list/doubly-linked-list.js +149 -218
  58. package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  59. package/dist/data-structures/linked-list/singly-linked-list.js +119 -218
  60. package/dist/data-structures/linked-list/singly-linked-list.js.map +1 -1
  61. package/dist/data-structures/linked-list/skip-linked-list.js +50 -70
  62. package/dist/data-structures/linked-list/skip-linked-list.js.map +1 -1
  63. package/dist/data-structures/matrix/matrix.js +7 -8
  64. package/dist/data-structures/matrix/matrix.js.map +1 -1
  65. package/dist/data-structures/matrix/matrix2d.js +57 -70
  66. package/dist/data-structures/matrix/matrix2d.js.map +1 -1
  67. package/dist/data-structures/matrix/navigator.js +18 -37
  68. package/dist/data-structures/matrix/navigator.js.map +1 -1
  69. package/dist/data-structures/matrix/vector2d.js +63 -84
  70. package/dist/data-structures/matrix/vector2d.js.map +1 -1
  71. package/dist/data-structures/priority-queue/max-priority-queue.js +13 -41
  72. package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  73. package/dist/data-structures/priority-queue/min-priority-queue.js +13 -41
  74. package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  75. package/dist/data-structures/priority-queue/priority-queue.js +93 -139
  76. package/dist/data-structures/priority-queue/priority-queue.js.map +1 -1
  77. package/dist/data-structures/queue/deque.js +82 -128
  78. package/dist/data-structures/queue/deque.js.map +1 -1
  79. package/dist/data-structures/queue/queue.js +57 -157
  80. package/dist/data-structures/queue/queue.js.map +1 -1
  81. package/dist/data-structures/stack/stack.js +21 -22
  82. package/dist/data-structures/stack/stack.js.map +1 -1
  83. package/dist/data-structures/tree/tree.js +33 -46
  84. package/dist/data-structures/tree/tree.js.map +1 -1
  85. package/dist/data-structures/trie/trie.js +93 -200
  86. package/dist/data-structures/trie/trie.js.map +1 -1
  87. package/dist/types/data-structures/abstract-binary-tree.js.map +1 -1
  88. package/dist/utils/utils.js +22 -107
  89. package/dist/utils/utils.js.map +1 -1
  90. package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +124 -123
  91. package/lib/data-structures/binary-tree/abstract-binary-tree.js +136 -216
  92. package/lib/data-structures/binary-tree/avl-tree.d.ts +19 -10
  93. package/lib/data-structures/binary-tree/avl-tree.js +35 -13
  94. package/lib/data-structures/binary-tree/binary-tree.d.ts +6 -6
  95. package/lib/data-structures/binary-tree/binary-tree.js +7 -7
  96. package/lib/data-structures/binary-tree/bst.d.ts +34 -34
  97. package/lib/data-structures/binary-tree/bst.js +86 -89
  98. package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
  99. package/lib/data-structures/binary-tree/rb-tree.js +4 -4
  100. package/lib/data-structures/binary-tree/tree-multiset.d.ts +40 -42
  101. package/lib/data-structures/binary-tree/tree-multiset.js +76 -86
  102. package/lib/data-structures/graph/abstract-graph.d.ts +62 -62
  103. package/lib/data-structures/graph/abstract-graph.js +86 -86
  104. package/lib/data-structures/graph/directed-graph.d.ts +51 -51
  105. package/lib/data-structures/graph/directed-graph.js +63 -63
  106. package/lib/data-structures/graph/map-graph.d.ts +13 -13
  107. package/lib/data-structures/graph/map-graph.js +12 -12
  108. package/lib/data-structures/graph/undirected-graph.d.ts +30 -30
  109. package/lib/data-structures/graph/undirected-graph.js +32 -32
  110. package/lib/data-structures/priority-queue/priority-queue.d.ts +3 -3
  111. package/lib/data-structures/priority-queue/priority-queue.js +3 -3
  112. package/lib/data-structures/tree/tree.d.ts +4 -4
  113. package/lib/data-structures/tree/tree.js +6 -6
  114. package/lib/interfaces/abstract-binary-tree.d.ts +37 -42
  115. package/lib/interfaces/abstract-graph.d.ts +13 -13
  116. package/lib/interfaces/avl-tree.d.ts +6 -4
  117. package/lib/interfaces/bst.d.ts +10 -9
  118. package/lib/interfaces/directed-graph.d.ts +5 -5
  119. package/lib/interfaces/rb-tree.d.ts +2 -2
  120. package/lib/interfaces/undirected-graph.d.ts +2 -2
  121. package/lib/types/data-structures/abstract-binary-tree.d.ts +3 -3
  122. package/lib/types/data-structures/abstract-binary-tree.js +0 -1
  123. package/lib/types/data-structures/abstract-graph.d.ts +2 -2
  124. package/lib/types/data-structures/bst.d.ts +2 -2
  125. package/lib/types/data-structures/tree-multiset.d.ts +1 -1
  126. package/lib/types/utils/validate-type.d.ts +8 -8
  127. package/package.json +6 -6
  128. package/scripts/rename_clear_files.sh +29 -0
  129. package/src/data-structures/binary-tree/abstract-binary-tree.ts +241 -293
  130. package/src/data-structures/binary-tree/avl-tree.ts +43 -14
  131. package/src/data-structures/binary-tree/binary-tree.ts +8 -8
  132. package/src/data-structures/binary-tree/bst.ts +101 -96
  133. package/src/data-structures/binary-tree/rb-tree.ts +9 -9
  134. package/src/data-structures/binary-tree/tree-multiset.ts +82 -94
  135. package/src/data-structures/graph/abstract-graph.ts +114 -109
  136. package/src/data-structures/graph/directed-graph.ts +77 -77
  137. package/src/data-structures/graph/map-graph.ts +20 -15
  138. package/src/data-structures/graph/undirected-graph.ts +39 -39
  139. package/src/data-structures/priority-queue/priority-queue.ts +3 -3
  140. package/src/data-structures/tree/tree.ts +7 -7
  141. package/src/interfaces/abstract-binary-tree.ts +37 -50
  142. package/src/interfaces/abstract-graph.ts +13 -13
  143. package/src/interfaces/avl-tree.ts +6 -4
  144. package/src/interfaces/bst.ts +9 -9
  145. package/src/interfaces/directed-graph.ts +5 -5
  146. package/src/interfaces/rb-tree.ts +2 -2
  147. package/src/interfaces/undirected-graph.ts +2 -2
  148. package/src/types/data-structures/abstract-binary-tree.ts +3 -4
  149. package/src/types/data-structures/abstract-graph.ts +2 -2
  150. package/src/types/data-structures/bst.ts +2 -2
  151. package/src/types/data-structures/tree-multiset.ts +1 -1
  152. package/src/types/utils/validate-type.ts +10 -10
  153. package/test/integration/avl-tree.test.ts +24 -24
  154. package/test/integration/bst.test.ts +71 -71
  155. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +28 -28
  156. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +4 -12
  157. package/test/unit/data-structures/binary-tree/bst.test.ts +79 -79
  158. package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
  159. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +80 -80
  160. package/test/unit/data-structures/graph/directed-graph.test.ts +8 -8
  161. package/test/unit/data-structures/graph/map-graph.test.ts +4 -4
  162. package/test/unit/data-structures/graph/overall.test.ts +2 -2
  163. package/test/unit/data-structures/graph/undirected-graph.test.ts +1 -1
  164. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +4 -5
  165. package/test/unit/data-structures/tree/tree.test.ts +2 -2
  166. package/umd/bundle.min.js +1 -1
  167. package/umd/bundle.min.js.map +1 -1
@@ -1,191 +1,91 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
18
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
19
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
20
- function verb(n) { return function (v) { return step([n, v]); }; }
21
- function step(op) {
22
- if (f) throw new TypeError("Generator is already executing.");
23
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
24
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
25
- if (y = 0, t) op = [op[0] & 2, t.value];
26
- switch (op[0]) {
27
- case 0: case 1: t = op; break;
28
- case 4: _.label++; return { value: op[1], done: false };
29
- case 5: _.label++; y = op[1]; op = [0]; continue;
30
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
31
- default:
32
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
33
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
34
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
35
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
36
- if (t[2]) _.ops.pop();
37
- _.trys.pop(); continue;
38
- }
39
- op = body.call(thisArg, _);
40
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
41
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
42
- }
43
- };
44
- var __values = (this && this.__values) || function(o) {
45
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
46
- if (m) return m.call(o);
47
- if (o && typeof o.length === "number") return {
48
- next: function () {
49
- if (o && i >= o.length) o = void 0;
50
- return { value: o && o[i++], done: !o };
51
- }
52
- };
53
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
54
- };
55
2
  Object.defineProperty(exports, "__esModule", { value: true });
56
3
  exports.Queue = exports.LinkedListQueue = void 0;
57
- var linked_list_1 = require("../linked-list");
58
- var LinkedListQueue = (function (_super) {
59
- __extends(LinkedListQueue, _super);
60
- function LinkedListQueue() {
61
- return _super !== null && _super.apply(this, arguments) || this;
62
- }
63
- LinkedListQueue.prototype.enqueue = function (value) {
4
+ const linked_list_1 = require("../linked-list");
5
+ class LinkedListQueue extends linked_list_1.SinglyLinkedList {
6
+ enqueue(value) {
64
7
  this.push(value);
65
- };
66
- LinkedListQueue.prototype.dequeue = function () {
8
+ }
9
+ dequeue() {
67
10
  return this.shift();
68
- };
69
- LinkedListQueue.prototype.peek = function () {
11
+ }
12
+ peek() {
70
13
  var _a;
71
14
  return (_a = this.head) === null || _a === void 0 ? void 0 : _a.val;
72
- };
73
- return LinkedListQueue;
74
- }(linked_list_1.SinglyLinkedList));
15
+ }
16
+ }
75
17
  exports.LinkedListQueue = LinkedListQueue;
76
- var Queue = (function () {
77
- function Queue(elements) {
18
+ class Queue {
19
+ constructor(elements) {
78
20
  this._nodes = elements || [];
79
21
  this._offset = 0;
80
22
  }
81
- Object.defineProperty(Queue.prototype, "nodes", {
82
- get: function () {
83
- return this._nodes;
84
- },
85
- set: function (value) {
86
- this._nodes = value;
87
- },
88
- enumerable: false,
89
- configurable: true
90
- });
91
- Object.defineProperty(Queue.prototype, "offset", {
92
- get: function () {
93
- return this._offset;
94
- },
95
- set: function (value) {
96
- this._offset = value;
97
- },
98
- enumerable: false,
99
- configurable: true
100
- });
101
- Object.defineProperty(Queue.prototype, "size", {
102
- get: function () {
103
- return this.nodes.length - this.offset;
104
- },
105
- enumerable: false,
106
- configurable: true
107
- });
108
- Queue.fromArray = function (elements) {
23
+ get nodes() {
24
+ return this._nodes;
25
+ }
26
+ set nodes(value) {
27
+ this._nodes = value;
28
+ }
29
+ get offset() {
30
+ return this._offset;
31
+ }
32
+ set offset(value) {
33
+ this._offset = value;
34
+ }
35
+ get size() {
36
+ return this.nodes.length - this.offset;
37
+ }
38
+ static fromArray(elements) {
109
39
  return new Queue(elements);
110
- };
111
- Queue.prototype.push = function (element) {
40
+ }
41
+ push(element) {
112
42
  this.nodes.push(element);
113
43
  return this;
114
- };
115
- Queue.prototype.shift = function () {
44
+ }
45
+ shift() {
116
46
  if (this.size === 0)
117
47
  return undefined;
118
- var first = this.peek();
48
+ const first = this.peek();
119
49
  this.offset += 1;
120
50
  if (this.offset * 2 < this.nodes.length)
121
51
  return first;
122
52
  this.nodes = this.nodes.slice(this.offset);
123
53
  this.offset = 0;
124
54
  return first;
125
- };
126
- Queue.prototype.peek = function () {
55
+ }
56
+ peek() {
127
57
  return this.size > 0 ? this.nodes[this.offset] : undefined;
128
- };
129
- Queue.prototype.peekLast = function () {
58
+ }
59
+ peekLast() {
130
60
  return this.size > 0 ? this.nodes[this.nodes.length - 1] : undefined;
131
- };
132
- Queue.prototype.enqueue = function (value) {
61
+ }
62
+ enqueue(value) {
133
63
  this.push(value);
134
- };
135
- Queue.prototype.dequeue = function () {
64
+ }
65
+ dequeue() {
136
66
  return this.shift();
137
- };
138
- Queue.prototype.getAt = function (index) {
67
+ }
68
+ getAt(index) {
139
69
  return this.nodes[index];
140
- };
141
- Queue.prototype.isEmpty = function () {
70
+ }
71
+ isEmpty() {
142
72
  return this.size === 0;
143
- };
144
- Queue.prototype.toArray = function () {
73
+ }
74
+ toArray() {
145
75
  return this.nodes.slice(this.offset);
146
- };
147
- Queue.prototype.clear = function () {
76
+ }
77
+ clear() {
148
78
  this.nodes = [];
149
79
  this.offset = 0;
150
- };
151
- Queue.prototype.clone = function () {
80
+ }
81
+ clone() {
152
82
  return new Queue(this.nodes.slice(this.offset));
153
- };
154
- Queue.prototype[Symbol.iterator] = function () {
155
- var _a, _b, item, e_1_1;
156
- var e_1, _c;
157
- return __generator(this, function (_d) {
158
- switch (_d.label) {
159
- case 0:
160
- _d.trys.push([0, 5, 6, 7]);
161
- _a = __values(this.nodes), _b = _a.next();
162
- _d.label = 1;
163
- case 1:
164
- if (!!_b.done) return [3, 4];
165
- item = _b.value;
166
- return [4, item];
167
- case 2:
168
- _d.sent();
169
- _d.label = 3;
170
- case 3:
171
- _b = _a.next();
172
- return [3, 1];
173
- case 4: return [3, 7];
174
- case 5:
175
- e_1_1 = _d.sent();
176
- e_1 = { error: e_1_1 };
177
- return [3, 7];
178
- case 6:
179
- try {
180
- if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
181
- }
182
- finally { if (e_1) throw e_1.error; }
183
- return [7];
184
- case 7: return [2];
185
- }
186
- });
187
- };
188
- return Queue;
189
- }());
83
+ }
84
+ *[Symbol.iterator]() {
85
+ for (const item of this.nodes) {
86
+ yield item;
87
+ }
88
+ }
89
+ }
190
90
  exports.Queue = Queue;
191
91
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/data-structures/queue/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/data-structures/queue/queue.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Stack = void 0;
4
- var Stack = (function () {
5
- function Stack(elements) {
4
+ class Stack {
5
+ constructor(elements) {
6
6
  this._elements = Array.isArray(elements) ? elements : [];
7
7
  }
8
- Stack.fromArray = function (elements) {
8
+ static fromArray(elements) {
9
9
  return new Stack(elements);
10
- };
11
- Stack.prototype.isEmpty = function () {
10
+ }
11
+ isEmpty() {
12
12
  return this._elements.length === 0;
13
- };
14
- Stack.prototype.size = function () {
13
+ }
14
+ size() {
15
15
  return this._elements.length;
16
- };
17
- Stack.prototype.peek = function () {
16
+ }
17
+ peek() {
18
18
  if (this.isEmpty())
19
19
  return null;
20
20
  return this._elements[this._elements.length - 1];
21
- };
22
- Stack.prototype.push = function (element) {
21
+ }
22
+ push(element) {
23
23
  this._elements.push(element);
24
24
  return this;
25
- };
26
- Stack.prototype.pop = function () {
25
+ }
26
+ pop() {
27
27
  if (this.isEmpty())
28
28
  return null;
29
29
  return this._elements.pop() || null;
30
- };
31
- Stack.prototype.toArray = function () {
30
+ }
31
+ toArray() {
32
32
  return this._elements.slice();
33
- };
34
- Stack.prototype.clear = function () {
33
+ }
34
+ clear() {
35
35
  this._elements = [];
36
- };
37
- Stack.prototype.clone = function () {
36
+ }
37
+ clone() {
38
38
  return new Stack(this._elements.slice());
39
- };
40
- return Stack;
41
- }());
39
+ }
40
+ }
42
41
  exports.Stack = Stack;
43
42
  //# sourceMappingURL=stack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/data-structures/stack/stack.ts"],"names":[],"mappings":";;;AAKA;IASE,eAAY,QAAc;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAQM,eAAS,GAAhB,UAAoB,QAAa;QAC/B,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAMD,uBAAO,GAAP;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IACrC,CAAC;IAMD,oBAAI,GAAJ;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAMD,oBAAI,GAAJ;QACE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QAEhC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAOD,oBAAI,GAAJ,UAAK,OAAU;QACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,mBAAG,GAAH;QACE,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QAEhC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;IACtC,CAAC;IAMD,uBAAO,GAAP;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAKD,qBAAK,GAAL;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAMD,qBAAK,GAAL;QACE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IACH,YAAC;AAAD,CAAC,AA5FD,IA4FC;AA5FY,sBAAK"}
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/data-structures/stack/stack.ts"],"names":[],"mappings":";;;AAKA,MAAa,KAAK;IAShB,YAAY,QAAc;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAQD,MAAM,CAAC,SAAS,CAAI,QAAa;QAC/B,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAMD,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IACrC,CAAC;IAMD,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;IAMD,IAAI;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QAEhC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAOD,IAAI,CAAC,OAAU;QACb,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,GAAG;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;QAEhC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;IACtC,CAAC;IAMD,OAAO;QACL,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAKD,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAMD,KAAK;QACH,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;CACF;AA5FD,sBA4FC"}
@@ -1,43 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TreeNode = void 0;
4
- var TreeNode = (function () {
5
- function TreeNode(id, value, children) {
6
- this._id = id;
4
+ class TreeNode {
5
+ constructor(key, value, children) {
6
+ this._key = key;
7
7
  this._value = value || undefined;
8
8
  this._children = children || [];
9
9
  }
10
- Object.defineProperty(TreeNode.prototype, "id", {
11
- get: function () {
12
- return this._id;
13
- },
14
- set: function (value) {
15
- this._id = value;
16
- },
17
- enumerable: false,
18
- configurable: true
19
- });
20
- Object.defineProperty(TreeNode.prototype, "value", {
21
- get: function () {
22
- return this._value;
23
- },
24
- set: function (value) {
25
- this._value = value;
26
- },
27
- enumerable: false,
28
- configurable: true
29
- });
30
- Object.defineProperty(TreeNode.prototype, "children", {
31
- get: function () {
32
- return this._children;
33
- },
34
- set: function (value) {
35
- this._children = value;
36
- },
37
- enumerable: false,
38
- configurable: true
39
- });
40
- TreeNode.prototype.addChildren = function (children) {
10
+ get key() {
11
+ return this._key;
12
+ }
13
+ set key(value) {
14
+ this._key = value;
15
+ }
16
+ get value() {
17
+ return this._value;
18
+ }
19
+ set value(value) {
20
+ this._value = value;
21
+ }
22
+ get children() {
23
+ return this._children;
24
+ }
25
+ set children(value) {
26
+ this._children = value;
27
+ }
28
+ addChildren(children) {
41
29
  if (!this.children) {
42
30
  this.children = [];
43
31
  }
@@ -47,27 +35,26 @@ var TreeNode = (function () {
47
35
  else {
48
36
  this.children = this.children.concat(children);
49
37
  }
50
- };
51
- TreeNode.prototype.getHeight = function () {
52
- var beginRoot = this;
53
- var maxDepth = 1;
38
+ }
39
+ getHeight() {
40
+ const beginRoot = this;
41
+ let maxDepth = 1;
54
42
  if (beginRoot) {
55
- var bfs_1 = function (node, level) {
43
+ const bfs = (node, level) => {
56
44
  if (level > maxDepth) {
57
45
  maxDepth = level;
58
46
  }
59
- var children = node.children;
47
+ const { children } = node;
60
48
  if (children) {
61
- for (var i = 0, len = children.length; i < len; i++) {
62
- bfs_1(children[i], level + 1);
49
+ for (let i = 0, len = children.length; i < len; i++) {
50
+ bfs(children[i], level + 1);
63
51
  }
64
52
  }
65
53
  };
66
- bfs_1(beginRoot, 1);
54
+ bfs(beginRoot, 1);
67
55
  }
68
56
  return maxDepth;
69
- };
70
- return TreeNode;
71
- }());
57
+ }
58
+ }
72
59
  exports.TreeNode = TreeNode;
73
60
  //# sourceMappingURL=tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/data-structures/tree/tree.ts"],"names":[],"mappings":";;;AAAA;IACE,kBAAY,EAAU,EAAE,KAAS,EAAE,QAAwB;QACzD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,EAAE,CAAC;IAClC,CAAC;IAID,sBAAI,wBAAE;aAAN;YACE,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;aAED,UAAO,KAAa;YAClB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QACnB,CAAC;;;OAJA;IAQD,sBAAI,2BAAK;aAAT;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;aAED,UAAU,KAAoB;YAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,CAAC;;;OAJA;IAQD,sBAAI,8BAAQ;aAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;aAED,UAAa,KAAgC;YAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;;;OAJA;IAMD,8BAAW,GAAX,UAAY,QAAqC;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAChD;IACH,CAAC;IAED,4BAAS,GAAT;QAEE,IAAM,SAAS,GAAG,IAAI,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,SAAS,EAAE;YACb,IAAM,KAAG,GAAG,UAAC,IAAiB,EAAE,KAAa;gBAC3C,IAAI,KAAK,GAAG,QAAQ,EAAE;oBACpB,QAAQ,GAAG,KAAK,CAAC;iBAClB;gBACM,IAAA,QAAQ,GAAI,IAAI,SAAR,CAAS;gBACxB,IAAI,QAAQ,EAAE;oBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;wBACnD,KAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;qBAC7B;iBACF;YACH,CAAC,CAAC;YACF,KAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACH,eAAC;AAAD,CAAC,AApED,IAoEC;AApEY,4BAAQ"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/data-structures/tree/tree.ts"],"names":[],"mappings":";;;AAAA,MAAa,QAAQ;IACnB,YAAY,GAAW,EAAE,KAAS,EAAE,QAAwB;QAC1D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,EAAE,CAAC;IAClC,CAAC;IAID,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,KAAa;QACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAID,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAID,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAgC;QAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,WAAW,CAAC,QAAqC;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAChD;IACH,CAAC;IAED,SAAS;QAEP,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,SAAS,EAAE;YACb,MAAM,GAAG,GAAG,CAAC,IAAiB,EAAE,KAAa,EAAE,EAAE;gBAC/C,IAAI,KAAK,GAAG,QAAQ,EAAE;oBACpB,QAAQ,GAAG,KAAK,CAAC;iBAClB;gBACD,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;gBACxB,IAAI,QAAQ,EAAE;oBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;wBACnD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;qBAC7B;iBACF;YACH,CAAC,CAAC;YACF,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AApED,4BAoEC"}