data-structure-typed 1.52.5 → 1.52.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-structure-typed",
3
- "version": "1.52.5",
3
+ "version": "1.52.6",
4
4
  "description": "Javascript Data Structure. Heap, Binary Tree, Red Black Tree, Linked List, Deque, Trie, HashMap, Directed Graph, Undirected Graph, Binary Search Tree(BST), AVL Tree, Priority Queue, Graph, Queue, Tree Multiset, Singly Linked List, Doubly Linked List, Max Heap, Max Priority Queue, Min Heap, Min Priority Queue, Stack. Benchmark compared with C++ STL. API aligned with ES6 and Java.util. Usability is comparable to Python",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/mjs/index.js",
@@ -66,11 +66,11 @@
66
66
  "@typescript-eslint/eslint-plugin": "^6.7.4",
67
67
  "@typescript-eslint/parser": "^6.7.4",
68
68
  "auto-changelog": "^2.4.0",
69
- "avl-tree-typed": "^1.52.4",
69
+ "avl-tree-typed": "^1.52.5",
70
70
  "benchmark": "^2.1.4",
71
- "binary-tree-typed": "^1.52.4",
72
- "bst-typed": "^1.52.4",
73
- "data-structure-typed": "^1.52.4",
71
+ "binary-tree-typed": "^1.52.5",
72
+ "bst-typed": "^1.52.5",
73
+ "data-structure-typed": "^1.52.5",
74
74
  "dependency-cruiser": "^14.1.0",
75
75
  "doctoc": "^2.2.1",
76
76
  "eslint": "^8.50.0",
@@ -79,7 +79,7 @@
79
79
  "eslint-import-resolver-typescript": "^3.6.1",
80
80
  "eslint-plugin-import": "^2.28.1",
81
81
  "fast-glob": "^3.3.1",
82
- "heap-typed": "^1.52.4",
82
+ "heap-typed": "^1.52.5",
83
83
  "istanbul-badges-readme": "^1.8.5",
84
84
  "jest": "^29.7.0",
85
85
  "js-sdsl": "^4.4.2",
@@ -335,7 +335,7 @@ export class BinaryTree<
335
335
  * @returns a boolean value.
336
336
  */
337
337
  isRealNodeOrNull(node: R | BTNKeyOrNodeOrEntry<K, V, NODE>): node is NODE | null {
338
- return this.isRealNode(node) || node === null;
338
+ return node === null || this.isRealNode(node);
339
339
  }
340
340
 
341
341
  /**
@@ -1843,7 +1843,7 @@ export class BinaryTree<
1843
1843
  if (includeNull) return this.isRealNodeOrNull(node);
1844
1844
  return this.isRealNode(node);
1845
1845
  },
1846
- shouldProcessRoot: (node: OptBTNOrNull<NODE>) => boolean = node => true
1846
+ shouldProcessRoot: (node: OptBTNOrNull<NODE>) => boolean = node => this.isRealNodeOrNull(node)
1847
1847
  ): ReturnType<C>[] {
1848
1848
  beginRoot = this.ensureNode(beginRoot);
1849
1849
  if (!beginRoot) return [];
@@ -36,7 +36,7 @@ describe('AVL Tree Test', () => {
36
36
  expect(getMinNodeByRoot?.key).toBe(1);
37
37
 
38
38
  const node15 = tree.getNode(15);
39
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
39
+ const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node => node, node15);
40
40
  expect(getMinNodeBySpecificNode?.key).toBe(12);
41
41
 
42
42
  let subTreeSum = 0;
@@ -30,7 +30,7 @@ describe('Individual package BST operations test', () => {
30
30
  expect(leftMost?.key).toBe(1);
31
31
 
32
32
  const node15 = bst.getNode(15);
33
- const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
33
+ const minNodeBySpecificNode = node15 && bst.getLeftMost(node => node, node15);
34
34
  expect(minNodeBySpecificNode?.key).toBe(12);
35
35
 
36
36
  let subTreeSum = 0;
@@ -230,7 +230,7 @@ describe('Individual package BST operations test', () => {
230
230
  key: 15,
231
231
  keyA: 15
232
232
  });
233
- const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
233
+ const minNodeBySpecificNode = node15 && objBST.getLeftMost(node => node, node15);
234
234
  expect(minNodeBySpecificNode?.key).toBe(12);
235
235
 
236
236
  let subTreeSum = 0;
@@ -848,110 +848,113 @@ describe('BinaryTree toEntryFn', () => {
848
848
  });
849
849
 
850
850
  describe('BinaryTree traversals', () => {
851
- const tree = new BinaryTree<number>();
851
+ it('traversals', () => {
852
+ const tree = new BinaryTree<number>();
853
+
854
+ const arr = [35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55];
855
+ tree.refill(arr);
856
+ expect(tree.bfs(node => node, tree.root, 'ITERATIVE', true).map(node => (node ? node.key : null))).toEqual([
857
+ 35,
858
+ 20,
859
+ 40,
860
+ 15,
861
+ 29,
862
+ null,
863
+ 50,
864
+ null,
865
+ 16,
866
+ 28,
867
+ 30,
868
+ 45,
869
+ 55
870
+ ]);
871
+ expect(tree.bfs(node => node, tree.root, 'RECURSIVE', true).map(node => (node ? node.key : null))).toEqual([
872
+ 35,
873
+ 20,
874
+ 40,
875
+ 15,
876
+ 29,
877
+ null,
878
+ 50,
879
+ null,
880
+ 16,
881
+ 28,
882
+ 30,
883
+ 45,
884
+ 55
885
+ ]);
886
+ expect(tree.bfs(node => node, tree.root, 'ITERATIVE').map(node => (node === null ? null : node.key))).toEqual([
887
+ 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
888
+ ]);
889
+ expect(tree.bfs(node => node, tree.root, 'RECURSIVE').map(node => (node === null ? null : node.key))).toEqual([
890
+ 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
891
+ ]);
892
+
893
+ expect(tree.dfs(node => node.key, 'PRE')).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
894
+ expect(tree.dfs(node => node.key, 'PRE', tree.root, 'RECURSIVE')).toEqual([
895
+ 35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55
896
+ ]);
897
+ expect(tree.dfs(node => node, 'PRE', tree.root, 'ITERATIVE', true).map(node => (node === null ? null : node.key))).toEqual([
898
+ 35,
899
+ 20,
900
+ 15,
901
+ null,
902
+ 16,
903
+ 29,
904
+ 28,
905
+ 30,
906
+ 40,
907
+ null,
908
+ 50,
909
+ 45,
910
+ 55
911
+ ]);
912
+ expect(tree.dfs(node => node, 'PRE', tree.root, 'RECURSIVE', true).map(node => (node ? node.key : null))).toEqual([
913
+ 35,
914
+ 20,
915
+ 15,
916
+ null,
917
+ 16,
918
+ 29,
919
+ 28,
920
+ 30,
921
+ 40,
922
+ null,
923
+ 50,
924
+ 45,
925
+ 55
926
+ ]);
927
+
928
+ expect(tree.dfs(node => node.key, 'IN')).toEqual([15, 16, 20, 28, 29, 30, 35, 40, 45, 50, 55]);
929
+ expect(tree.dfs(node => node.key, 'POST')).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
930
+ expect(tree.dfs(node => node.key, 'POST', tree.root, 'RECURSIVE')).toEqual([
931
+ 16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35
932
+ ]);
933
+ expect(tree.bfs(node => node.key, tree.root, 'RECURSIVE')).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
934
+ expect(tree.bfs(node => node.key, tree.root, 'ITERATIVE')).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
935
+
936
+ expect(tree.listLevels(node => node.key)).toEqual([[35], [20, 40], [15, 29, 50], [16, 28, 30, 45, 55]]);
937
+
938
+ expect(tree.listLevels(node => node.key, tree.root, 'RECURSIVE')).toEqual([
939
+ [35],
940
+ [20, 40],
941
+ [15, 29, 50],
942
+ [16, 28, 30, 45, 55]
943
+ ]);
944
+ expect(tree.listLevels(node => (node ? node.key : null), tree.root, 'ITERATIVE', true)).toEqual([
945
+ [35],
946
+ [20, 40],
947
+ [15, 29, null, 50],
948
+ [null, 16, 28, 30, 45, 55]
949
+ ]);
950
+ expect(tree.listLevels(node => (node ? node.key : null), tree.root, 'RECURSIVE', true)).toEqual([
951
+ [35],
952
+ [20, 40],
953
+ [15, 29, null, 50],
954
+ [null, 16, 28, 30, 45, 55]
955
+ ]);
956
+ })
852
957
 
853
- const arr = [35, 20, 40, 15, 29, null, 50, null, 16, 28, 30, 45, 55];
854
- tree.refill(arr);
855
- expect(tree.bfs(node => node, tree.root, 'ITERATIVE', true).map(node => (node ? node.key : null))).toEqual([
856
- 35,
857
- 20,
858
- 40,
859
- 15,
860
- 29,
861
- null,
862
- 50,
863
- null,
864
- 16,
865
- 28,
866
- 30,
867
- 45,
868
- 55
869
- ]);
870
- expect(tree.bfs(node => node, tree.root, 'RECURSIVE', true).map(node => (node ? node.key : null))).toEqual([
871
- 35,
872
- 20,
873
- 40,
874
- 15,
875
- 29,
876
- null,
877
- 50,
878
- null,
879
- 16,
880
- 28,
881
- 30,
882
- 45,
883
- 55
884
- ]);
885
- expect(tree.bfs(node => node, tree.root, 'ITERATIVE').map(node => (node === null ? null : node.key))).toEqual([
886
- 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
887
- ]);
888
- expect(tree.bfs(node => node, tree.root, 'RECURSIVE').map(node => (node === null ? null : node.key))).toEqual([
889
- 35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55
890
- ]);
891
-
892
- expect(tree.dfs(node => node.key, 'PRE')).toEqual([35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55]);
893
- expect(tree.dfs(node => node.key, 'PRE', tree.root, 'RECURSIVE')).toEqual([
894
- 35, 20, 15, 16, 29, 28, 30, 40, 50, 45, 55
895
- ]);
896
- expect(tree.dfs(node => node, 'PRE', tree.root, 'ITERATIVE', true).map(node => (node ? node.key : null))).toEqual([
897
- 35,
898
- 20,
899
- 15,
900
- null,
901
- 16,
902
- 29,
903
- 28,
904
- 30,
905
- 40,
906
- null,
907
- 50,
908
- 45,
909
- 55
910
- ]);
911
- expect(tree.dfs(node => node, 'PRE', tree.root, 'RECURSIVE', true).map(node => (node ? node.key : null))).toEqual([
912
- 35,
913
- 20,
914
- 15,
915
- null,
916
- 16,
917
- 29,
918
- 28,
919
- 30,
920
- 40,
921
- null,
922
- 50,
923
- 45,
924
- 55
925
- ]);
926
-
927
- expect(tree.dfs(node => node.key, 'IN')).toEqual([15, 16, 20, 28, 29, 30, 35, 40, 45, 50, 55]);
928
- expect(tree.dfs(node => node.key, 'POST')).toEqual([16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35]);
929
- expect(tree.dfs(node => node.key, 'POST', tree.root, 'RECURSIVE')).toEqual([
930
- 16, 15, 28, 30, 29, 20, 45, 55, 50, 40, 35
931
- ]);
932
- expect(tree.bfs(node => node.key, tree.root, 'RECURSIVE')).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
933
- expect(tree.bfs(node => node.key, tree.root, 'ITERATIVE')).toEqual([35, 20, 40, 15, 29, 50, 16, 28, 30, 45, 55]);
934
-
935
- expect(tree.listLevels(node => node.key)).toEqual([[35], [20, 40], [15, 29, 50], [16, 28, 30, 45, 55]]);
936
-
937
- expect(tree.listLevels(node => node.key, tree.root, 'RECURSIVE')).toEqual([
938
- [35],
939
- [20, 40],
940
- [15, 29, 50],
941
- [16, 28, 30, 45, 55]
942
- ]);
943
- expect(tree.listLevels(node => (node ? node.key : null), tree.root, 'ITERATIVE', true)).toEqual([
944
- [35],
945
- [20, 40],
946
- [15, 29, null, 50],
947
- [null, 16, 28, 30, 45, 55]
948
- ]);
949
- expect(tree.listLevels(node => (node ? node.key : null), tree.root, 'RECURSIVE', true)).toEqual([
950
- [35],
951
- [20, 40],
952
- [15, 29, null, 50],
953
- [null, 16, 28, 30, 45, 55]
954
- ]);
955
958
  });
956
959
 
957
960
  describe('BinaryTree', () => {