data-structure-typed 1.41.8 → 1.42.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.
@@ -703,9 +703,10 @@ class BinaryTree {
703
703
  * start from the root of the tree.
704
704
  * @param iterationType - The `iterationType` parameter determines the type of traversal to be
705
705
  * performed on the binary tree. It can have two possible values:
706
+ * @param includeNull - The choice to output null values during binary tree traversal should be provided.
706
707
  * @returns The function `subTreeTraverse` returns an array of `ReturnType<BTNCallback<N>>`.
707
708
  */
708
- subTreeTraverse(callback = this.defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType) {
709
+ subTreeTraverse(callback = this.defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType, includeNull = false) {
709
710
  if (typeof beginRoot === 'number')
710
711
  beginRoot = this.getNode(beginRoot);
711
712
  const ans = [];
@@ -713,9 +714,17 @@ class BinaryTree {
713
714
  return ans;
714
715
  if (iterationType === types_1.IterationType.RECURSIVE) {
715
716
  const _traverse = (cur) => {
716
- ans.push(callback(cur));
717
- cur.left && _traverse(cur.left);
718
- cur.right && _traverse(cur.right);
717
+ if (cur !== undefined) {
718
+ ans.push(callback(cur));
719
+ if (includeNull) {
720
+ cur !== null && cur.left !== undefined && _traverse(cur.left);
721
+ cur !== null && cur.right !== undefined && _traverse(cur.right);
722
+ }
723
+ else {
724
+ cur !== null && cur.left && _traverse(cur.left);
725
+ cur !== null && cur.right && _traverse(cur.right);
726
+ }
727
+ }
719
728
  };
720
729
  _traverse(beginRoot);
721
730
  }
@@ -723,9 +732,17 @@ class BinaryTree {
723
732
  const stack = [beginRoot];
724
733
  while (stack.length > 0) {
725
734
  const cur = stack.pop();
726
- ans.push(callback(cur));
727
- cur.right && stack.push(cur.right);
728
- cur.left && stack.push(cur.left);
735
+ if (cur !== undefined) {
736
+ ans.push(callback(cur));
737
+ if (includeNull) {
738
+ cur !== null && cur.right !== undefined && stack.push(cur.right);
739
+ cur !== null && cur.left !== undefined && stack.push(cur.left);
740
+ }
741
+ else {
742
+ cur !== null && cur.right && stack.push(cur.right);
743
+ cur !== null && cur.left && stack.push(cur.left);
744
+ }
745
+ }
729
746
  }
730
747
  }
731
748
  return ans;
@@ -743,9 +760,10 @@ class BinaryTree {
743
760
  * is `null`, an empty array will be returned.
744
761
  * @param {IterationType} iterationType - The `iterationType` parameter determines the type of
745
762
  * iteration used in the depth-first search algorithm. It can have two possible values:
763
+ * @param includeNull - The choice to output null values during binary tree traversal should be provided.
746
764
  * @returns The function `dfs` returns an array of `ReturnType<BTNCallback<N>>` values.
747
765
  */
748
- dfs(callback = this.defaultOneParamCallback, pattern = 'in', beginRoot = this.root, iterationType = types_1.IterationType.ITERATIVE) {
766
+ dfs(callback = this.defaultOneParamCallback, pattern = 'in', beginRoot = this.root, iterationType = types_1.IterationType.ITERATIVE, includeNull = false) {
749
767
  if (!beginRoot)
750
768
  return [];
751
769
  const ans = [];
@@ -753,25 +771,52 @@ class BinaryTree {
753
771
  const _traverse = (node) => {
754
772
  switch (pattern) {
755
773
  case 'in':
756
- if (node.left)
757
- _traverse(node.left);
758
- ans.push(callback(node));
759
- if (node.right)
760
- _traverse(node.right);
774
+ if (includeNull) {
775
+ if (node !== null && node.left !== undefined)
776
+ _traverse(node.left);
777
+ ans.push(callback(node));
778
+ if (node !== null && node.right !== undefined)
779
+ _traverse(node.right);
780
+ }
781
+ else {
782
+ if (node !== null && node.left)
783
+ _traverse(node.left);
784
+ ans.push(callback(node));
785
+ if (node !== null && node.right)
786
+ _traverse(node.right);
787
+ }
761
788
  break;
762
789
  case 'pre':
763
- ans.push(callback(node));
764
- if (node.left)
765
- _traverse(node.left);
766
- if (node.right)
767
- _traverse(node.right);
790
+ if (includeNull) {
791
+ ans.push(callback(node));
792
+ if (node !== null && node.left !== undefined)
793
+ _traverse(node.left);
794
+ if (node !== null && node.right !== undefined)
795
+ _traverse(node.right);
796
+ }
797
+ else {
798
+ ans.push(callback(node));
799
+ if (node !== null && node.left)
800
+ _traverse(node.left);
801
+ if (node !== null && node.right)
802
+ _traverse(node.right);
803
+ }
768
804
  break;
769
805
  case 'post':
770
- if (node.left)
771
- _traverse(node.left);
772
- if (node.right)
773
- _traverse(node.right);
774
- ans.push(callback(node));
806
+ if (includeNull) {
807
+ if (node !== null && node.left !== undefined)
808
+ _traverse(node.left);
809
+ if (node !== null && node.right !== undefined)
810
+ _traverse(node.right);
811
+ ans.push(callback(node));
812
+ }
813
+ else {
814
+ if (node !== null && node.left)
815
+ _traverse(node.left);
816
+ if (node !== null && node.right)
817
+ _traverse(node.right);
818
+ ans.push(callback(node));
819
+ }
775
820
  break;
776
821
  }
777
822
  };
@@ -782,32 +827,40 @@ class BinaryTree {
782
827
  const stack = [{ opt: 0, node: beginRoot }];
783
828
  while (stack.length > 0) {
784
829
  const cur = stack.pop();
785
- if (!cur || !cur.node)
830
+ if (cur === undefined)
786
831
  continue;
832
+ if (includeNull) {
833
+ if (cur.node === undefined)
834
+ continue;
835
+ }
836
+ else {
837
+ if (cur.node === null || cur.node === undefined)
838
+ continue;
839
+ }
787
840
  if (cur.opt === 1) {
788
841
  ans.push(callback(cur.node));
789
842
  }
790
843
  else {
791
844
  switch (pattern) {
792
845
  case 'in':
793
- stack.push({ opt: 0, node: cur.node.right });
846
+ cur.node && stack.push({ opt: 0, node: cur.node.right });
794
847
  stack.push({ opt: 1, node: cur.node });
795
- stack.push({ opt: 0, node: cur.node.left });
848
+ cur.node && stack.push({ opt: 0, node: cur.node.left });
796
849
  break;
797
850
  case 'pre':
798
- stack.push({ opt: 0, node: cur.node.right });
799
- stack.push({ opt: 0, node: cur.node.left });
851
+ cur.node && stack.push({ opt: 0, node: cur.node.right });
852
+ cur.node && stack.push({ opt: 0, node: cur.node.left });
800
853
  stack.push({ opt: 1, node: cur.node });
801
854
  break;
802
855
  case 'post':
803
856
  stack.push({ opt: 1, node: cur.node });
804
- stack.push({ opt: 0, node: cur.node.right });
805
- stack.push({ opt: 0, node: cur.node.left });
857
+ cur.node && stack.push({ opt: 0, node: cur.node.right });
858
+ cur.node && stack.push({ opt: 0, node: cur.node.left });
806
859
  break;
807
860
  default:
808
- stack.push({ opt: 0, node: cur.node.right });
861
+ cur.node && stack.push({ opt: 0, node: cur.node.right });
809
862
  stack.push({ opt: 1, node: cur.node });
810
- stack.push({ opt: 0, node: cur.node.left });
863
+ cur.node && stack.push({ opt: 0, node: cur.node.left });
811
864
  break;
812
865
  }
813
866
  }
@@ -826,9 +879,10 @@ class BinaryTree {
826
879
  * will not be performed and an empty array will be returned.
827
880
  * @param iterationType - The `iterationType` parameter determines the type of iteration to be used
828
881
  * in the breadth-first search (BFS) algorithm. It can have two possible values:
882
+ * @param includeNull - The choice to output null values during binary tree traversal should be provided.
829
883
  * @returns The function `bfs` returns an array of `ReturnType<BTNCallback<N>>[]`.
830
884
  */
831
- bfs(callback = this.defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType) {
885
+ bfs(callback = this.defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType, includeNull = false) {
832
886
  if (!beginRoot)
833
887
  return [];
834
888
  const ans = [];
@@ -839,10 +893,18 @@ class BinaryTree {
839
893
  return;
840
894
  const current = queue.shift();
841
895
  ans.push(callback(current));
842
- if (current.left)
843
- queue.push(current.left);
844
- if (current.right)
845
- queue.push(current.right);
896
+ if (includeNull) {
897
+ if (current && current.left !== undefined)
898
+ queue.push(current.left);
899
+ if (current && current.right !== undefined)
900
+ queue.push(current.right);
901
+ }
902
+ else {
903
+ if (current.left)
904
+ queue.push(current.left);
905
+ if (current.right)
906
+ queue.push(current.right);
907
+ }
846
908
  traverse(level + 1);
847
909
  };
848
910
  traverse(0);
@@ -854,10 +916,18 @@ class BinaryTree {
854
916
  for (let i = 0; i < levelSize; i++) {
855
917
  const current = queue.shift();
856
918
  ans.push(callback(current));
857
- if (current.left)
858
- queue.push(current.left);
859
- if (current.right)
860
- queue.push(current.right);
919
+ if (includeNull) {
920
+ if (current !== null && current.left !== undefined)
921
+ queue.push(current.left);
922
+ if (current !== null && current.right !== undefined)
923
+ queue.push(current.right);
924
+ }
925
+ else {
926
+ if (current.left)
927
+ queue.push(current.left);
928
+ if (current.right)
929
+ queue.push(current.right);
930
+ }
861
931
  }
862
932
  }
863
933
  }
@@ -874,11 +944,12 @@ class BinaryTree {
874
944
  * from the root node of the binary tree.
875
945
  * @param iterationType - The `iterationType` parameter determines whether the tree traversal is done
876
946
  * recursively or iteratively. It can have two possible values:
947
+ * @param includeNull - The choice to output null values during binary tree traversal should be provided.
877
948
  * @returns The function `listLevels` returns an array of arrays, where each inner array represents a
878
949
  * level in a binary tree. Each inner array contains the return type of the provided callback
879
950
  * function `C` applied to the nodes at that level.
880
951
  */
881
- listLevels(callback = this.defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType) {
952
+ listLevels(callback = this.defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType, includeNull = false) {
882
953
  if (!beginRoot)
883
954
  return [];
884
955
  const levelsNodes = [];
@@ -887,10 +958,18 @@ class BinaryTree {
887
958
  if (!levelsNodes[level])
888
959
  levelsNodes[level] = [];
889
960
  levelsNodes[level].push(callback(node));
890
- if (node.left)
891
- _recursive(node.left, level + 1);
892
- if (node.right)
893
- _recursive(node.right, level + 1);
961
+ if (includeNull) {
962
+ if (node && node.left !== undefined)
963
+ _recursive(node.left, level + 1);
964
+ if (node && node.right !== undefined)
965
+ _recursive(node.right, level + 1);
966
+ }
967
+ else {
968
+ if (node && node.left)
969
+ _recursive(node.left, level + 1);
970
+ if (node && node.right)
971
+ _recursive(node.right, level + 1);
972
+ }
894
973
  };
895
974
  _recursive(beginRoot, 0);
896
975
  }
@@ -902,10 +981,18 @@ class BinaryTree {
902
981
  if (!levelsNodes[level])
903
982
  levelsNodes[level] = [];
904
983
  levelsNodes[level].push(callback(node));
905
- if (node.right)
906
- stack.push([node.right, level + 1]);
907
- if (node.left)
908
- stack.push([node.left, level + 1]);
984
+ if (includeNull) {
985
+ if (node && node.right !== undefined)
986
+ stack.push([node.right, level + 1]);
987
+ if (node && node.left !== undefined)
988
+ stack.push([node.left, level + 1]);
989
+ }
990
+ else {
991
+ if (node && node.right)
992
+ stack.push([node.right, level + 1]);
993
+ if (node && node.left)
994
+ stack.push([node.left, level + 1]);
995
+ }
909
996
  }
910
997
  }
911
998
  return levelsNodes;
@@ -1 +1 @@
1
- {"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../../../src/data-structures/binary-tree/binary-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-tree.js","sourceRoot":"","sources":["../../../../../src/data-structures/binary-tree/binary-tree.ts"],"names":[],"mappings":"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"}
@@ -114,9 +114,10 @@ export declare abstract class AbstractGraph<V = any, E = any, VO extends Abstrac
114
114
  * @param {VO | VertexKey} v1 - The parameter `v1` represents either a vertex object (`VO`) or a vertex ID (`VertexKey`).
115
115
  * It is the starting vertex for finding paths.
116
116
  * @param {VO | VertexKey} v2 - The parameter `v2` represents either a vertex object (`VO`) or a vertex ID (`VertexKey`).
117
+ * @param limit - The count of limitation of result array.
117
118
  * @returns The function `getAllPathsBetween` returns an array of arrays of vertices (`VO[][]`).
118
119
  */
119
- getAllPathsBetween(v1: VO | VertexKey, v2: VO | VertexKey): VO[][];
120
+ getAllPathsBetween(v1: VO | VertexKey, v2: VO | VertexKey, limit?: number): VO[][];
120
121
  /**
121
122
  * The function calculates the sum of weights along a given path.
122
123
  * @param {VO[]} path - An array of vertices (VO) representing a path in a graph.
@@ -148,10 +149,13 @@ export declare abstract class AbstractGraph<V = any, E = any, VO extends Abstrac
148
149
  * @param {boolean} [isWeight] - A boolean flag indicating whether to consider the weight of edges in finding the
149
150
  * minimum path. If set to true, the function will use Dijkstra's algorithm to find the minimum weighted path. If set
150
151
  * to false, the function will use breadth-first search (BFS) to find the minimum path.
152
+ * @param isDFS - If set to true, it enforces the use of getAllPathsBetween to first obtain all possible paths,
153
+ * followed by iterative computation of the shortest path. This approach may result in exponential time complexity,
154
+ * so the default method is to use the Dijkstra algorithm to obtain the shortest weighted path.
151
155
  * @returns The function `getMinPathBetween` returns an array of vertices (`VO[]`) representing the minimum path between
152
156
  * two vertices (`v1` and `v2`). If there is no path between the vertices, it returns `null`.
153
157
  */
154
- getMinPathBetween(v1: VO | VertexKey, v2: VO | VertexKey, isWeight?: boolean): VO[] | null;
158
+ getMinPathBetween(v1: VO | VertexKey, v2: VO | VertexKey, isWeight?: boolean, isDFS?: boolean): VO[] | null;
155
159
  /**
156
160
  * Dijkstra algorithm time: O(VE) space: O(VO + EO)
157
161
  * /
@@ -4,8 +4,8 @@ exports.AbstractGraph = exports.AbstractEdge = exports.AbstractVertex = void 0;
4
4
  /**
5
5
  * data-structure-typed
6
6
  *
7
- * @author Kirk Qi
8
- * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
7
+ * @author Tyler Zeng
8
+ * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
9
9
  * @license MIT License
10
10
  */
11
11
  const utils_1 = require("../../utils");
@@ -162,31 +162,33 @@ class AbstractGraph {
162
162
  * @param {VO | VertexKey} v1 - The parameter `v1` represents either a vertex object (`VO`) or a vertex ID (`VertexKey`).
163
163
  * It is the starting vertex for finding paths.
164
164
  * @param {VO | VertexKey} v2 - The parameter `v2` represents either a vertex object (`VO`) or a vertex ID (`VertexKey`).
165
+ * @param limit - The count of limitation of result array.
165
166
  * @returns The function `getAllPathsBetween` returns an array of arrays of vertices (`VO[][]`).
166
167
  */
167
- getAllPathsBetween(v1, v2) {
168
+ getAllPathsBetween(v1, v2, limit = 1000) {
168
169
  const paths = [];
169
170
  const vertex1 = this._getVertex(v1);
170
171
  const vertex2 = this._getVertex(v2);
171
172
  if (!(vertex1 && vertex2)) {
172
173
  return [];
173
174
  }
174
- const dfs = (cur, dest, visiting, path) => {
175
- visiting.add(cur);
176
- if (cur === dest) {
177
- paths.push([vertex1, ...path]);
175
+ const stack = [];
176
+ stack.push({ vertex: vertex1, path: [vertex1] });
177
+ while (stack.length > 0) {
178
+ const { vertex, path } = stack.pop();
179
+ if (vertex === vertex2) {
180
+ paths.push(path);
181
+ if (paths.length >= limit)
182
+ return paths;
178
183
  }
179
- const neighbors = this.getNeighbors(cur);
184
+ const neighbors = this.getNeighbors(vertex);
180
185
  for (const neighbor of neighbors) {
181
- if (!visiting.has(neighbor)) {
182
- path.push(neighbor);
183
- dfs(neighbor, dest, visiting, path);
184
- path.pop();
186
+ if (!path.includes(neighbor)) {
187
+ const newPath = [...path, neighbor];
188
+ stack.push({ vertex: neighbor, path: newPath });
185
189
  }
186
190
  }
187
- visiting.delete(cur);
188
- };
189
- dfs(vertex1, vertex2, new Set(), []);
191
+ }
190
192
  return paths;
191
193
  }
192
194
  /**
@@ -270,52 +272,60 @@ class AbstractGraph {
270
272
  * @param {boolean} [isWeight] - A boolean flag indicating whether to consider the weight of edges in finding the
271
273
  * minimum path. If set to true, the function will use Dijkstra's algorithm to find the minimum weighted path. If set
272
274
  * to false, the function will use breadth-first search (BFS) to find the minimum path.
275
+ * @param isDFS - If set to true, it enforces the use of getAllPathsBetween to first obtain all possible paths,
276
+ * followed by iterative computation of the shortest path. This approach may result in exponential time complexity,
277
+ * so the default method is to use the Dijkstra algorithm to obtain the shortest weighted path.
273
278
  * @returns The function `getMinPathBetween` returns an array of vertices (`VO[]`) representing the minimum path between
274
279
  * two vertices (`v1` and `v2`). If there is no path between the vertices, it returns `null`.
275
280
  */
276
- getMinPathBetween(v1, v2, isWeight) {
281
+ getMinPathBetween(v1, v2, isWeight, isDFS = false) {
282
+ var _a, _b;
277
283
  if (isWeight === undefined)
278
284
  isWeight = false;
279
285
  if (isWeight) {
280
- const allPaths = this.getAllPathsBetween(v1, v2);
281
- let min = Infinity;
282
- let minIndex = -1;
283
- let index = 0;
284
- for (const path of allPaths) {
285
- const pathSumWeight = this.getPathSumWeight(path);
286
- if (pathSumWeight < min) {
287
- min = pathSumWeight;
288
- minIndex = index;
286
+ if (isDFS) {
287
+ const allPaths = this.getAllPathsBetween(v1, v2, 10000);
288
+ let min = Infinity;
289
+ let minIndex = -1;
290
+ let index = 0;
291
+ for (const path of allPaths) {
292
+ const pathSumWeight = this.getPathSumWeight(path);
293
+ if (pathSumWeight < min) {
294
+ min = pathSumWeight;
295
+ minIndex = index;
296
+ }
297
+ index++;
289
298
  }
290
- index++;
299
+ return allPaths[minIndex] || null;
300
+ }
301
+ else {
302
+ return (_b = (_a = this.dijkstra(v1, v2, true, true)) === null || _a === void 0 ? void 0 : _a.minPath) !== null && _b !== void 0 ? _b : [];
291
303
  }
292
- return allPaths[minIndex] || null;
293
304
  }
294
305
  else {
295
- // BFS
306
+ // DFS
296
307
  let minPath = [];
297
308
  const vertex1 = this._getVertex(v1);
298
309
  const vertex2 = this._getVertex(v2);
299
- if (!(vertex1 && vertex2)) {
310
+ if (!(vertex1 && vertex2))
300
311
  return [];
301
- }
302
312
  const dfs = (cur, dest, visiting, path) => {
303
- visiting.set(cur, true);
313
+ visiting.add(cur);
304
314
  if (cur === dest) {
305
315
  minPath = [vertex1, ...path];
306
316
  return;
307
317
  }
308
318
  const neighbors = this.getNeighbors(cur);
309
319
  for (const neighbor of neighbors) {
310
- if (!visiting.get(neighbor)) {
320
+ if (!visiting.has(neighbor)) {
311
321
  path.push(neighbor);
312
322
  dfs(neighbor, dest, visiting, path);
313
- (0, utils_1.arrayRemove)(path, (vertex) => vertex === neighbor);
323
+ path.pop();
314
324
  }
315
325
  }
316
- visiting.set(cur, false);
326
+ visiting.delete(cur);
317
327
  };
318
- dfs(vertex1, vertex2, new Map(), []);
328
+ dfs(vertex1, vertex2, new Set(), []);
319
329
  return minPath;
320
330
  }
321
331
  }