data-structure-typed 1.34.8 → 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 (126) 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 +280 -423
  8. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  9. package/dist/data-structures/binary-tree/avl-tree.js +63 -89
  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 +11 -30
  16. package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
  17. package/dist/data-structures/binary-tree/bst.js +127 -214
  18. package/dist/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/data-structures/binary-tree/rb-tree.js +19 -43
  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 +147 -218
  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 +338 -572
  30. package/dist/data-structures/graph/abstract-graph.js.map +1 -1
  31. package/dist/data-structures/graph/directed-graph.js +145 -275
  32. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  33. package/dist/data-structures/graph/map-graph.js +46 -87
  34. package/dist/data-structures/graph/map-graph.js.map +1 -1
  35. package/dist/data-structures/graph/undirected-graph.js +90 -179
  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 +32 -45
  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 +79 -78
  91. package/lib/data-structures/binary-tree/abstract-binary-tree.js +61 -141
  92. package/lib/data-structures/binary-tree/avl-tree.d.ts +9 -0
  93. package/lib/data-structures/binary-tree/avl-tree.js +22 -0
  94. package/lib/data-structures/binary-tree/bst.d.ts +3 -3
  95. package/lib/data-structures/binary-tree/bst.js +12 -15
  96. package/lib/data-structures/binary-tree/tree-multiset.d.ts +16 -18
  97. package/lib/data-structures/binary-tree/tree-multiset.js +26 -36
  98. package/lib/data-structures/graph/abstract-graph.d.ts +2 -2
  99. package/lib/data-structures/graph/abstract-graph.js +5 -5
  100. package/lib/data-structures/priority-queue/priority-queue.d.ts +3 -3
  101. package/lib/data-structures/priority-queue/priority-queue.js +3 -3
  102. package/lib/interfaces/abstract-binary-tree.d.ts +23 -28
  103. package/lib/interfaces/avl-tree.d.ts +3 -1
  104. package/lib/interfaces/bst.d.ts +2 -1
  105. package/lib/types/data-structures/abstract-binary-tree.js +0 -1
  106. package/package.json +6 -6
  107. package/src/data-structures/binary-tree/abstract-binary-tree.ts +151 -203
  108. package/src/data-structures/binary-tree/avl-tree.ts +29 -0
  109. package/src/data-structures/binary-tree/bst.ts +12 -15
  110. package/src/data-structures/binary-tree/tree-multiset.ts +27 -39
  111. package/src/data-structures/graph/abstract-graph.ts +5 -5
  112. package/src/data-structures/priority-queue/priority-queue.ts +3 -3
  113. package/src/interfaces/abstract-binary-tree.ts +23 -36
  114. package/src/interfaces/avl-tree.ts +3 -1
  115. package/src/interfaces/bst.ts +1 -1
  116. package/src/types/data-structures/abstract-binary-tree.ts +0 -1
  117. package/test/integration/avl-tree.test.ts +24 -24
  118. package/test/integration/bst.test.ts +71 -71
  119. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +4 -4
  120. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +1 -9
  121. package/test/unit/data-structures/binary-tree/bst.test.ts +8 -8
  122. package/test/unit/data-structures/binary-tree/overall.test.ts +1 -1
  123. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +9 -9
  124. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +4 -4
  125. package/umd/bundle.min.js +1 -1
  126. package/umd/bundle.min.js.map +1 -1
@@ -1,77 +1,31 @@
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
- };
28
- var __read = (this && this.__read) || function (o, n) {
29
- var m = typeof Symbol === "function" && o[Symbol.iterator];
30
- if (!m) return o;
31
- var i = m.call(o), r, ar = [], e;
32
- try {
33
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
- }
35
- catch (error) { e = { error: error }; }
36
- finally {
37
- try {
38
- if (r && !r.done && (m = i["return"])) m.call(i);
39
- }
40
- finally { if (e) throw e.error; }
41
- }
42
- return ar;
43
- };
44
2
  Object.defineProperty(exports, "__esModule", { value: true });
45
3
  exports.BST = exports.BSTNode = void 0;
46
- var types_1 = require("../../types");
47
- var binary_tree_1 = require("./binary-tree");
48
- var BSTNode = (function (_super) {
49
- __extends(BSTNode, _super);
50
- function BSTNode(key, val) {
51
- return _super.call(this, key, val) || this;
4
+ const types_1 = require("../../types");
5
+ const binary_tree_1 = require("./binary-tree");
6
+ class BSTNode extends binary_tree_1.BinaryTreeNode {
7
+ constructor(key, val) {
8
+ super(key, val);
52
9
  }
53
- return BSTNode;
54
- }(binary_tree_1.BinaryTreeNode));
10
+ }
55
11
  exports.BSTNode = BSTNode;
56
- var BST = (function (_super) {
57
- __extends(BST, _super);
58
- function BST(options) {
59
- var _this = _super.call(this, options) || this;
60
- _this._comparator = function (a, b) { return a - b; };
12
+ class BST extends binary_tree_1.BinaryTree {
13
+ constructor(options) {
14
+ super(options);
15
+ this._comparator = (a, b) => a - b;
61
16
  if (options !== undefined) {
62
- var comparator = options.comparator;
17
+ const { comparator } = options;
63
18
  if (comparator !== undefined) {
64
- _this._comparator = comparator;
19
+ this._comparator = comparator;
65
20
  }
66
21
  }
67
- return _this;
68
22
  }
69
- BST.prototype.createNode = function (key, val) {
23
+ createNode(key, val) {
70
24
  return new BSTNode(key, val);
71
- };
72
- BST.prototype.add = function (keyOrNode, val) {
73
- var inserted = null;
74
- var newNode = null;
25
+ }
26
+ add(keyOrNode, val) {
27
+ let inserted = null;
28
+ let newNode = null;
75
29
  if (keyOrNode instanceof BSTNode) {
76
30
  newNode = keyOrNode;
77
31
  }
@@ -87,8 +41,8 @@ var BST = (function (_super) {
87
41
  inserted = this.root;
88
42
  }
89
43
  else {
90
- var cur = this.root;
91
- var traversing = true;
44
+ let cur = this.root;
45
+ let traversing = true;
92
46
  while (traversing) {
93
47
  if (cur !== null && newNode !== null) {
94
48
  if (this._compare(cur.key, newNode.key) === types_1.CP.eq) {
@@ -135,92 +89,60 @@ var BST = (function (_super) {
135
89
  }
136
90
  }
137
91
  return inserted;
138
- };
139
- BST.prototype.addMany = function (idsOrNodes, data, isBalanceAdd) {
140
- var _this = this;
141
- if (isBalanceAdd === void 0) { isBalanceAdd = false; }
92
+ }
93
+ addMany(keysOrNodes, data, isBalanceAdd = false) {
142
94
  function hasNoNull(arr) {
143
95
  return arr.indexOf(null) === -1;
144
96
  }
145
- if (!isBalanceAdd || !hasNoNull(idsOrNodes)) {
146
- return _super.prototype.addMany.call(this, idsOrNodes, data);
97
+ if (!isBalanceAdd || !hasNoNull(keysOrNodes)) {
98
+ return super.addMany(keysOrNodes, data);
147
99
  }
148
- var inserted = [];
149
- var combinedArr = idsOrNodes.map(function (value, index) { return [value, data === null || data === void 0 ? void 0 : data[index]]; });
150
- var sorted = [];
100
+ const inserted = [];
101
+ const combinedArr = keysOrNodes.map((value, index) => [value, data === null || data === void 0 ? void 0 : data[index]]);
102
+ let sorted = [];
151
103
  function isNodeOrNullTuple(arr) {
152
- var e_1, _a;
153
- try {
154
- for (var arr_1 = __values(arr), arr_1_1 = arr_1.next(); !arr_1_1.done; arr_1_1 = arr_1.next()) {
155
- var _b = __read(arr_1_1.value, 1), keyOrNode = _b[0];
156
- if (keyOrNode instanceof BSTNode)
157
- return true;
158
- }
159
- }
160
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
161
- finally {
162
- try {
163
- if (arr_1_1 && !arr_1_1.done && (_a = arr_1.return)) _a.call(arr_1);
164
- }
165
- finally { if (e_1) throw e_1.error; }
166
- }
104
+ for (const [keyOrNode] of arr)
105
+ if (keyOrNode instanceof BSTNode)
106
+ return true;
167
107
  return false;
168
108
  }
169
109
  function isBinaryTreeKeyOrNullTuple(arr) {
170
- var e_2, _a;
171
- try {
172
- for (var arr_2 = __values(arr), arr_2_1 = arr_2.next(); !arr_2_1.done; arr_2_1 = arr_2.next()) {
173
- var _b = __read(arr_2_1.value, 1), keyOrNode = _b[0];
174
- if (typeof keyOrNode === 'number')
175
- return true;
176
- }
177
- }
178
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
179
- finally {
180
- try {
181
- if (arr_2_1 && !arr_2_1.done && (_a = arr_2.return)) _a.call(arr_2);
182
- }
183
- finally { if (e_2) throw e_2.error; }
184
- }
110
+ for (const [keyOrNode] of arr)
111
+ if (typeof keyOrNode === 'number')
112
+ return true;
185
113
  return false;
186
114
  }
187
- var sortedKeysOrNodes = [], sortedData = [];
115
+ let sortedKeysOrNodes = [], sortedData = [];
188
116
  if (isNodeOrNullTuple(combinedArr)) {
189
- sorted = combinedArr.sort(function (a, b) { return a[0].key - b[0].key; });
117
+ sorted = combinedArr.sort((a, b) => a[0].key - b[0].key);
190
118
  }
191
119
  else if (isBinaryTreeKeyOrNullTuple(combinedArr)) {
192
- sorted = combinedArr.sort(function (a, b) { return a[0] - b[0]; });
120
+ sorted = combinedArr.sort((a, b) => a[0] - b[0]);
193
121
  }
194
122
  else {
195
- throw new Error('Invalid input idsOrNodes');
123
+ throw new Error('Invalid input keysOrNodes');
196
124
  }
197
- sortedKeysOrNodes = sorted.map(function (_a) {
198
- var _b = __read(_a, 1), keyOrNode = _b[0];
199
- return keyOrNode;
200
- });
201
- sortedData = sorted.map(function (_a) {
202
- var _b = __read(_a, 2), val = _b[1];
203
- return val;
204
- });
205
- var recursive = function (arr, data) {
125
+ sortedKeysOrNodes = sorted.map(([keyOrNode]) => keyOrNode);
126
+ sortedData = sorted.map(([, val]) => val);
127
+ const recursive = (arr, data) => {
206
128
  if (arr.length === 0)
207
129
  return;
208
- var mid = Math.floor((arr.length - 1) / 2);
209
- var newNode = _this.add(arr[mid], data === null || data === void 0 ? void 0 : data[mid]);
130
+ const mid = Math.floor((arr.length - 1) / 2);
131
+ const newNode = this.add(arr[mid], data === null || data === void 0 ? void 0 : data[mid]);
210
132
  inserted.push(newNode);
211
133
  recursive(arr.slice(0, mid), data === null || data === void 0 ? void 0 : data.slice(0, mid));
212
134
  recursive(arr.slice(mid + 1), data === null || data === void 0 ? void 0 : data.slice(mid + 1));
213
135
  };
214
- var iterative = function () {
215
- var n = sorted.length;
216
- var stack = [[0, n - 1]];
136
+ const iterative = () => {
137
+ const n = sorted.length;
138
+ const stack = [[0, n - 1]];
217
139
  while (stack.length > 0) {
218
- var popped = stack.pop();
140
+ const popped = stack.pop();
219
141
  if (popped) {
220
- var _a = __read(popped, 2), l = _a[0], r = _a[1];
142
+ const [l, r] = popped;
221
143
  if (l <= r) {
222
- var m = l + Math.floor((r - l) / 2);
223
- var newNode = _this.add(sortedKeysOrNodes[m], sortedData === null || sortedData === void 0 ? void 0 : sortedData[m]);
144
+ const m = l + Math.floor((r - l) / 2);
145
+ const newNode = this.add(sortedKeysOrNodes[m], sortedData === null || sortedData === void 0 ? void 0 : sortedData[m]);
224
146
  inserted.push(newNode);
225
147
  stack.push([m + 1, r]);
226
148
  stack.push([l, m - 1]);
@@ -235,13 +157,12 @@ var BST = (function (_super) {
235
157
  iterative();
236
158
  }
237
159
  return inserted;
238
- };
239
- BST.prototype.get = function (nodeProperty, propertyName) {
160
+ }
161
+ get(nodeProperty, propertyName = 'key') {
240
162
  var _a;
241
- propertyName = propertyName !== null && propertyName !== void 0 ? propertyName : 'key';
242
163
  return (_a = this.getNodes(nodeProperty, propertyName, true)[0]) !== null && _a !== void 0 ? _a : null;
243
- };
244
- BST.prototype.lastKey = function () {
164
+ }
165
+ lastKey() {
245
166
  var _a, _b, _c, _d, _e, _f;
246
167
  if (this._compare(0, 1) === types_1.CP.lt)
247
168
  return (_b = (_a = this.getRightMost()) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : 0;
@@ -249,36 +170,34 @@ var BST = (function (_super) {
249
170
  return (_d = (_c = this.getLeftMost()) === null || _c === void 0 ? void 0 : _c.key) !== null && _d !== void 0 ? _d : 0;
250
171
  else
251
172
  return (_f = (_e = this.getRightMost()) === null || _e === void 0 ? void 0 : _e.key) !== null && _f !== void 0 ? _f : 0;
252
- };
253
- BST.prototype.getNodes = function (nodeProperty, propertyName, onlyOne) {
254
- var _this = this;
255
- if (propertyName === void 0) { propertyName = 'key'; }
173
+ }
174
+ getNodes(nodeProperty, propertyName = 'key', onlyOne = false) {
256
175
  if (!this.root)
257
176
  return [];
258
- var result = [];
177
+ const result = [];
259
178
  if (this.loopType === types_1.LoopType.RECURSIVE) {
260
- var _traverse_1 = function (cur) {
261
- if (_this._pushByPropertyNameStopOrNot(cur, result, nodeProperty, propertyName, onlyOne))
179
+ const _traverse = (cur) => {
180
+ if (this._pushByPropertyNameStopOrNot(cur, result, nodeProperty, propertyName, onlyOne))
262
181
  return;
263
182
  if (!cur.left && !cur.right)
264
183
  return;
265
184
  if (propertyName === 'key') {
266
- if (_this._compare(cur.key, nodeProperty) === types_1.CP.gt)
267
- cur.left && _traverse_1(cur.left);
268
- if (_this._compare(cur.key, nodeProperty) === types_1.CP.lt)
269
- cur.right && _traverse_1(cur.right);
185
+ if (this._compare(cur.key, nodeProperty) === types_1.CP.gt)
186
+ cur.left && _traverse(cur.left);
187
+ if (this._compare(cur.key, nodeProperty) === types_1.CP.lt)
188
+ cur.right && _traverse(cur.right);
270
189
  }
271
190
  else {
272
- cur.left && _traverse_1(cur.left);
273
- cur.right && _traverse_1(cur.right);
191
+ cur.left && _traverse(cur.left);
192
+ cur.right && _traverse(cur.right);
274
193
  }
275
194
  };
276
- _traverse_1(this.root);
195
+ _traverse(this.root);
277
196
  }
278
197
  else {
279
- var queue = [this.root];
198
+ const queue = [this.root];
280
199
  while (queue.length > 0) {
281
- var cur = queue.shift();
200
+ const cur = queue.shift();
282
201
  if (cur) {
283
202
  if (this._pushByPropertyNameStopOrNot(cur, result, nodeProperty, propertyName, onlyOne))
284
203
  return result;
@@ -296,19 +215,17 @@ var BST = (function (_super) {
296
215
  }
297
216
  }
298
217
  return result;
299
- };
300
- BST.prototype.lesserSum = function (beginNode, propertyName) {
301
- var _this = this;
302
- propertyName = propertyName !== null && propertyName !== void 0 ? propertyName : 'key';
218
+ }
219
+ lesserSum(beginNode, propertyName = 'key') {
303
220
  if (typeof beginNode === 'number')
304
221
  beginNode = this.get(beginNode, 'key');
305
222
  if (!beginNode)
306
223
  return 0;
307
224
  if (!this.root)
308
225
  return 0;
309
- var key = beginNode.key;
310
- var getSumByPropertyName = function (cur) {
311
- var needSum;
226
+ const key = beginNode.key;
227
+ const getSumByPropertyName = (cur) => {
228
+ let needSum;
312
229
  switch (propertyName) {
313
230
  case 'key':
314
231
  needSum = cur.key;
@@ -319,39 +236,39 @@ var BST = (function (_super) {
319
236
  }
320
237
  return needSum;
321
238
  };
322
- var sum = 0;
239
+ let sum = 0;
323
240
  if (this.loopType === types_1.LoopType.RECURSIVE) {
324
- var _traverse_2 = function (cur) {
325
- var compared = _this._compare(cur.key, key);
241
+ const _traverse = (cur) => {
242
+ const compared = this._compare(cur.key, key);
326
243
  if (compared === types_1.CP.eq) {
327
244
  if (cur.right)
328
- sum += _this.subTreeSum(cur.right, propertyName);
245
+ sum += this.subTreeSum(cur.right, propertyName);
329
246
  return;
330
247
  }
331
248
  else if (compared === types_1.CP.lt) {
332
249
  if (cur.left)
333
- sum += _this.subTreeSum(cur.left, propertyName);
250
+ sum += this.subTreeSum(cur.left, propertyName);
334
251
  sum += getSumByPropertyName(cur);
335
252
  if (cur.right)
336
- _traverse_2(cur.right);
253
+ _traverse(cur.right);
337
254
  else
338
255
  return;
339
256
  }
340
257
  else {
341
258
  if (cur.left)
342
- _traverse_2(cur.left);
259
+ _traverse(cur.left);
343
260
  else
344
261
  return;
345
262
  }
346
263
  };
347
- _traverse_2(this.root);
264
+ _traverse(this.root);
348
265
  }
349
266
  else {
350
- var queue = [this.root];
267
+ const queue = [this.root];
351
268
  while (queue.length > 0) {
352
- var cur = queue.shift();
269
+ const cur = queue.shift();
353
270
  if (cur) {
354
- var compared = this._compare(cur.key, key);
271
+ const compared = this._compare(cur.key, key);
355
272
  if (compared === types_1.CP.eq) {
356
273
  if (cur.right)
357
274
  sum += this.subTreeSum(cur.right, propertyName);
@@ -376,18 +293,16 @@ var BST = (function (_super) {
376
293
  }
377
294
  }
378
295
  return sum;
379
- };
380
- BST.prototype.allGreaterNodesAdd = function (node, delta, propertyName) {
381
- var _this = this;
382
- propertyName = propertyName !== null && propertyName !== void 0 ? propertyName : 'key';
296
+ }
297
+ allGreaterNodesAdd(node, delta, propertyName = 'key') {
383
298
  if (typeof node === 'number')
384
299
  node = this.get(node, 'key');
385
300
  if (!node)
386
301
  return false;
387
- var key = node.key;
302
+ const key = node.key;
388
303
  if (!this.root)
389
304
  return false;
390
- var _sumByPropertyName = function (cur) {
305
+ const _sumByPropertyName = (cur) => {
391
306
  switch (propertyName) {
392
307
  case 'key':
393
308
  cur.key += delta;
@@ -398,26 +313,26 @@ var BST = (function (_super) {
398
313
  }
399
314
  };
400
315
  if (this.loopType === types_1.LoopType.RECURSIVE) {
401
- var _traverse_3 = function (cur) {
402
- var compared = _this._compare(cur.key, key);
316
+ const _traverse = (cur) => {
317
+ const compared = this._compare(cur.key, key);
403
318
  if (compared === types_1.CP.gt)
404
319
  _sumByPropertyName(cur);
405
320
  if (!cur.left && !cur.right)
406
321
  return;
407
- if (cur.left && _this._compare(cur.left.key, key) === types_1.CP.gt)
408
- _traverse_3(cur.left);
409
- if (cur.right && _this._compare(cur.right.key, key) === types_1.CP.gt)
410
- _traverse_3(cur.right);
322
+ if (cur.left && this._compare(cur.left.key, key) === types_1.CP.gt)
323
+ _traverse(cur.left);
324
+ if (cur.right && this._compare(cur.right.key, key) === types_1.CP.gt)
325
+ _traverse(cur.right);
411
326
  };
412
- _traverse_3(this.root);
327
+ _traverse(this.root);
413
328
  return true;
414
329
  }
415
330
  else {
416
- var queue = [this.root];
331
+ const queue = [this.root];
417
332
  while (queue.length > 0) {
418
- var cur = queue.shift();
333
+ const cur = queue.shift();
419
334
  if (cur) {
420
- var compared = this._compare(cur.key, key);
335
+ const compared = this._compare(cur.key, key);
421
336
  if (compared === types_1.CP.gt)
422
337
  _sumByPropertyName(cur);
423
338
  if (cur.left && this._compare(cur.left.key, key) === types_1.CP.gt)
@@ -428,35 +343,34 @@ var BST = (function (_super) {
428
343
  }
429
344
  return true;
430
345
  }
431
- };
432
- BST.prototype.perfectlyBalance = function () {
433
- var _this = this;
434
- var sorted = this.DFS('in', 'node'), n = sorted.length;
346
+ }
347
+ perfectlyBalance() {
348
+ const sorted = this.dfs('in', 'node'), n = sorted.length;
435
349
  this.clear();
436
350
  if (sorted.length < 1)
437
351
  return false;
438
352
  if (this.loopType === types_1.LoopType.RECURSIVE) {
439
- var buildBalanceBST_1 = function (l, r) {
353
+ const buildBalanceBST = (l, r) => {
440
354
  if (l > r)
441
355
  return;
442
- var m = l + Math.floor((r - l) / 2);
443
- var midNode = sorted[m];
444
- _this.add(midNode.key, midNode.val);
445
- buildBalanceBST_1(l, m - 1);
446
- buildBalanceBST_1(m + 1, r);
356
+ const m = l + Math.floor((r - l) / 2);
357
+ const midNode = sorted[m];
358
+ this.add(midNode.key, midNode.val);
359
+ buildBalanceBST(l, m - 1);
360
+ buildBalanceBST(m + 1, r);
447
361
  };
448
- buildBalanceBST_1(0, n - 1);
362
+ buildBalanceBST(0, n - 1);
449
363
  return true;
450
364
  }
451
365
  else {
452
- var stack = [[0, n - 1]];
366
+ const stack = [[0, n - 1]];
453
367
  while (stack.length > 0) {
454
- var popped = stack.pop();
368
+ const popped = stack.pop();
455
369
  if (popped) {
456
- var _a = __read(popped, 2), l = _a[0], r = _a[1];
370
+ const [l, r] = popped;
457
371
  if (l <= r) {
458
- var m = l + Math.floor((r - l) / 2);
459
- var midNode = sorted[m];
372
+ const m = l + Math.floor((r - l) / 2);
373
+ const midNode = sorted[m];
460
374
  this.add(midNode.key, midNode.val);
461
375
  stack.push([m + 1, r]);
462
376
  stack.push([l, m - 1]);
@@ -465,27 +379,27 @@ var BST = (function (_super) {
465
379
  }
466
380
  return true;
467
381
  }
468
- };
469
- BST.prototype.isAVLBalanced = function () {
382
+ }
383
+ isAVLBalanced() {
470
384
  var _a, _b;
471
385
  if (!this.root)
472
386
  return true;
473
- var balanced = true;
387
+ let balanced = true;
474
388
  if (this.loopType === types_1.LoopType.RECURSIVE) {
475
- var _height_1 = function (cur) {
389
+ const _height = (cur) => {
476
390
  if (!cur)
477
391
  return 0;
478
- var leftHeight = _height_1(cur.left), rightHeight = _height_1(cur.right);
392
+ const leftHeight = _height(cur.left), rightHeight = _height(cur.right);
479
393
  if (Math.abs(leftHeight - rightHeight) > 1)
480
394
  balanced = false;
481
395
  return Math.max(leftHeight, rightHeight) + 1;
482
396
  };
483
- _height_1(this.root);
397
+ _height(this.root);
484
398
  }
485
399
  else {
486
- var stack = [];
487
- var node = this.root, last = null;
488
- var depths = new Map();
400
+ const stack = [];
401
+ let node = this.root, last = null;
402
+ const depths = new Map();
489
403
  while (stack.length > 0 || node) {
490
404
  if (node) {
491
405
  stack.push(node);
@@ -496,8 +410,8 @@ var BST = (function (_super) {
496
410
  if (!node.right || last === node.right) {
497
411
  node = stack.pop();
498
412
  if (node) {
499
- var left = node.left ? (_a = depths.get(node.left)) !== null && _a !== void 0 ? _a : -1 : -1;
500
- var right = node.right ? (_b = depths.get(node.right)) !== null && _b !== void 0 ? _b : -1 : -1;
413
+ const left = node.left ? (_a = depths.get(node.left)) !== null && _a !== void 0 ? _a : -1 : -1;
414
+ const right = node.right ? (_b = depths.get(node.right)) !== null && _b !== void 0 ? _b : -1 : -1;
501
415
  if (Math.abs(left - right) > 1)
502
416
  return false;
503
417
  depths.set(node, 1 + Math.max(left, right));
@@ -511,17 +425,16 @@ var BST = (function (_super) {
511
425
  }
512
426
  }
513
427
  return balanced;
514
- };
515
- BST.prototype._compare = function (a, b) {
516
- var compared = this._comparator(a, b);
428
+ }
429
+ _compare(a, b) {
430
+ const compared = this._comparator(a, b);
517
431
  if (compared > 0)
518
432
  return types_1.CP.gt;
519
433
  else if (compared < 0)
520
434
  return types_1.CP.lt;
521
435
  else
522
436
  return types_1.CP.eq;
523
- };
524
- return BST;
525
- }(binary_tree_1.BinaryTree));
437
+ }
438
+ }
526
439
  exports.BST = BST;
527
440
  //# sourceMappingURL=bst.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bst.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/bst.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bst.js","sourceRoot":"","sources":["../../../src/data-structures/binary-tree/bst.ts"],"names":[],"mappings":"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"}