data-structure-typed 1.42.8 → 1.42.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 (107) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +12 -12
  3. package/benchmark/report.html +12 -12
  4. package/benchmark/report.json +106 -106
  5. package/dist/cjs/src/data-structures/binary-tree/avl-tree.d.ts +88 -23
  6. package/dist/cjs/src/data-structures/binary-tree/avl-tree.js +88 -23
  7. package/dist/cjs/src/data-structures/binary-tree/avl-tree.js.map +1 -1
  8. package/dist/cjs/src/data-structures/binary-tree/binary-tree.d.ts +180 -74
  9. package/dist/cjs/src/data-structures/binary-tree/binary-tree.js +388 -201
  10. package/dist/cjs/src/data-structures/binary-tree/binary-tree.js.map +1 -1
  11. package/dist/cjs/src/data-structures/binary-tree/bst.d.ts +121 -66
  12. package/dist/cjs/src/data-structures/binary-tree/bst.js +121 -67
  13. package/dist/cjs/src/data-structures/binary-tree/bst.js.map +1 -1
  14. package/dist/cjs/src/data-structures/binary-tree/rb-tree.d.ts +72 -5
  15. package/dist/cjs/src/data-structures/binary-tree/rb-tree.js +95 -18
  16. package/dist/cjs/src/data-structures/binary-tree/rb-tree.js.map +1 -1
  17. package/dist/cjs/src/data-structures/binary-tree/tree-multimap.d.ts +82 -43
  18. package/dist/cjs/src/data-structures/binary-tree/tree-multimap.js +82 -43
  19. package/dist/cjs/src/data-structures/binary-tree/tree-multimap.js.map +1 -1
  20. package/dist/cjs/src/data-structures/graph/abstract-graph.d.ts +139 -36
  21. package/dist/cjs/src/data-structures/graph/abstract-graph.js +147 -36
  22. package/dist/cjs/src/data-structures/graph/abstract-graph.js.map +1 -1
  23. package/dist/cjs/src/data-structures/graph/directed-graph.d.ts +126 -0
  24. package/dist/cjs/src/data-structures/graph/directed-graph.js +126 -0
  25. package/dist/cjs/src/data-structures/graph/directed-graph.js.map +1 -1
  26. package/dist/cjs/src/data-structures/graph/undirected-graph.d.ts +63 -0
  27. package/dist/cjs/src/data-structures/graph/undirected-graph.js +63 -0
  28. package/dist/cjs/src/data-structures/graph/undirected-graph.js.map +1 -1
  29. package/dist/cjs/src/data-structures/heap/heap.d.ts +175 -12
  30. package/dist/cjs/src/data-structures/heap/heap.js +175 -12
  31. package/dist/cjs/src/data-structures/heap/heap.js.map +1 -1
  32. package/dist/cjs/src/data-structures/linked-list/doubly-linked-list.d.ts +203 -0
  33. package/dist/cjs/src/data-structures/linked-list/doubly-linked-list.js +203 -0
  34. package/dist/cjs/src/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  35. package/dist/cjs/src/data-structures/linked-list/singly-linked-list.d.ts +182 -0
  36. package/dist/cjs/src/data-structures/linked-list/singly-linked-list.js +182 -0
  37. package/dist/cjs/src/data-structures/linked-list/singly-linked-list.js.map +1 -1
  38. package/dist/cjs/src/data-structures/linked-list/skip-linked-list.d.ts +64 -0
  39. package/dist/cjs/src/data-structures/linked-list/skip-linked-list.js +64 -0
  40. package/dist/cjs/src/data-structures/linked-list/skip-linked-list.js.map +1 -1
  41. package/dist/cjs/src/data-structures/queue/deque.d.ts +113 -3
  42. package/dist/cjs/src/data-structures/queue/deque.js +113 -3
  43. package/dist/cjs/src/data-structures/queue/deque.js.map +1 -1
  44. package/dist/cjs/src/data-structures/queue/queue.d.ts +87 -0
  45. package/dist/cjs/src/data-structures/queue/queue.js +87 -0
  46. package/dist/cjs/src/data-structures/queue/queue.js.map +1 -1
  47. package/dist/cjs/src/data-structures/stack/stack.d.ts +42 -0
  48. package/dist/cjs/src/data-structures/stack/stack.js +42 -0
  49. package/dist/cjs/src/data-structures/stack/stack.js.map +1 -1
  50. package/dist/cjs/src/data-structures/trie/trie.d.ts +76 -0
  51. package/dist/cjs/src/data-structures/trie/trie.js +76 -1
  52. package/dist/cjs/src/data-structures/trie/trie.js.map +1 -1
  53. package/dist/mjs/src/data-structures/binary-tree/avl-tree.d.ts +88 -23
  54. package/dist/mjs/src/data-structures/binary-tree/avl-tree.js +88 -23
  55. package/dist/mjs/src/data-structures/binary-tree/binary-tree.d.ts +180 -74
  56. package/dist/mjs/src/data-structures/binary-tree/binary-tree.js +388 -201
  57. package/dist/mjs/src/data-structures/binary-tree/bst.d.ts +121 -66
  58. package/dist/mjs/src/data-structures/binary-tree/bst.js +121 -67
  59. package/dist/mjs/src/data-structures/binary-tree/rb-tree.d.ts +72 -5
  60. package/dist/mjs/src/data-structures/binary-tree/rb-tree.js +95 -18
  61. package/dist/mjs/src/data-structures/binary-tree/tree-multimap.d.ts +82 -43
  62. package/dist/mjs/src/data-structures/binary-tree/tree-multimap.js +82 -43
  63. package/dist/mjs/src/data-structures/graph/abstract-graph.d.ts +139 -36
  64. package/dist/mjs/src/data-structures/graph/abstract-graph.js +147 -36
  65. package/dist/mjs/src/data-structures/graph/directed-graph.d.ts +126 -0
  66. package/dist/mjs/src/data-structures/graph/directed-graph.js +126 -0
  67. package/dist/mjs/src/data-structures/graph/undirected-graph.d.ts +63 -0
  68. package/dist/mjs/src/data-structures/graph/undirected-graph.js +63 -0
  69. package/dist/mjs/src/data-structures/heap/heap.d.ts +175 -12
  70. package/dist/mjs/src/data-structures/heap/heap.js +175 -12
  71. package/dist/mjs/src/data-structures/linked-list/doubly-linked-list.d.ts +203 -0
  72. package/dist/mjs/src/data-structures/linked-list/doubly-linked-list.js +203 -0
  73. package/dist/mjs/src/data-structures/linked-list/singly-linked-list.d.ts +182 -0
  74. package/dist/mjs/src/data-structures/linked-list/singly-linked-list.js +182 -0
  75. package/dist/mjs/src/data-structures/linked-list/skip-linked-list.d.ts +64 -0
  76. package/dist/mjs/src/data-structures/linked-list/skip-linked-list.js +64 -0
  77. package/dist/mjs/src/data-structures/queue/deque.d.ts +113 -3
  78. package/dist/mjs/src/data-structures/queue/deque.js +113 -3
  79. package/dist/mjs/src/data-structures/queue/queue.d.ts +87 -0
  80. package/dist/mjs/src/data-structures/queue/queue.js +87 -0
  81. package/dist/mjs/src/data-structures/stack/stack.d.ts +42 -0
  82. package/dist/mjs/src/data-structures/stack/stack.js +42 -0
  83. package/dist/mjs/src/data-structures/trie/trie.d.ts +76 -0
  84. package/dist/mjs/src/data-structures/trie/trie.js +76 -1
  85. package/dist/umd/data-structure-typed.min.js +1 -1
  86. package/dist/umd/data-structure-typed.min.js.map +1 -1
  87. package/package.json +1 -1
  88. package/src/data-structures/binary-tree/avl-tree.ts +97 -23
  89. package/src/data-structures/binary-tree/binary-tree.ts +419 -204
  90. package/src/data-structures/binary-tree/bst.ts +130 -68
  91. package/src/data-structures/binary-tree/rb-tree.ts +106 -19
  92. package/src/data-structures/binary-tree/tree-multimap.ts +88 -44
  93. package/src/data-structures/graph/abstract-graph.ts +133 -7
  94. package/src/data-structures/graph/directed-graph.ts +145 -1
  95. package/src/data-structures/graph/undirected-graph.ts +72 -0
  96. package/src/data-structures/heap/heap.ts +201 -12
  97. package/src/data-structures/linked-list/doubly-linked-list.ts +232 -0
  98. package/src/data-structures/linked-list/singly-linked-list.ts +208 -0
  99. package/src/data-structures/linked-list/skip-linked-list.ts +74 -0
  100. package/src/data-structures/queue/deque.ts +127 -3
  101. package/src/data-structures/queue/queue.ts +99 -0
  102. package/src/data-structures/stack/stack.ts +48 -0
  103. package/src/data-structures/trie/trie.ts +87 -4
  104. package/test/integration/index.html +24 -2
  105. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +19 -2
  106. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -1
  107. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -1
@@ -28,13 +28,13 @@
28
28
 
29
29
 
30
30
  const queue = new Queue();
31
- for (let i = 0; i < 1000000; i++) {
31
+ for (let i = 0; i < 100000; i++) {
32
32
  queue.enqueue(i);
33
33
  }
34
34
  let last = 0;
35
35
  const startTime = performance.now();
36
36
 
37
- for (let i = 0; i < 1000000; i++) {
37
+ for (let i = 0; i < 100000; i++) {
38
38
  last = queue.dequeue();
39
39
  }
40
40
 
@@ -44,6 +44,28 @@
44
44
  console.error(e);
45
45
  }
46
46
 
47
+ try {
48
+ const {BinaryTree} = dataStructureTyped;
49
+ const tree = new BinaryTree();
50
+ tree.add(3);
51
+ tree.add(12);
52
+ tree.addMany([1, 6, 9, 8,5,2,3,4,7])
53
+ tree.add(10);
54
+ console.log(tree.isPerfectlyBalanced());
55
+ tree.print();
56
+
57
+ const node3 = tree.getNode(3);
58
+ if (node3) node3.right = tree.createNode(1);
59
+ console.log(tree.isPerfectlyBalanced());
60
+ tree.print();
61
+
62
+ tree.clear();
63
+ tree.addMany([1, null, 2, null, 3, null, 4, null, 5, null, 6, null]);
64
+ console.log(tree.isPerfectlyBalanced());
65
+ tree.print();
66
+ } catch (e) {
67
+ console.error(e);
68
+ }
47
69
  </script>
48
70
 
49
71
  </body>
@@ -1,4 +1,5 @@
1
1
  import {BinaryTree, BinaryTreeNode, IterationType} from '../../../../src';
2
+ import {getRandomIntArray} from "../../../utils";
2
3
  // import {isDebugTest} from '../../../config';
3
4
 
4
5
  // const isDebug = isDebugTest;
@@ -112,6 +113,24 @@ describe('BinaryTree', () => {
112
113
  expect(tree.has('3', node => node.value?.toString())).toBe(true);
113
114
  });
114
115
 
116
+
117
+ it('should be a balance tree after malicious manipulation', () => {
118
+ tree.add(3);
119
+ tree.add(12);
120
+ tree.addMany(getRandomIntArray(100, 1, 100))
121
+ tree.add(10);
122
+
123
+ expect(tree.isPerfectlyBalanced()).toBe(true);
124
+ const node3 = tree.getNode(3);
125
+
126
+ if (node3) node3.right = tree.createNode(1);
127
+ expect(tree.isPerfectlyBalanced()).toBe(false);
128
+
129
+ tree.clear();
130
+ tree.addMany([1, null, 2, null, 3, null, 4, null, 5, null, 6, null]);
131
+ expect(tree.isPerfectlyBalanced()).toBe(false);
132
+ });
133
+
115
134
  it('should getDepth return correct depth', () => {
116
135
  tree.add(1);
117
136
  expect(tree.getDepth(1)).toBe(0);
@@ -480,10 +499,8 @@ describe('BinaryTree', () => {
480
499
  tree.add(7, 'C');
481
500
 
482
501
  tree.iterationType = IterationType.ITERATIVE;
483
- // @ts-ignore
484
502
  expect([...tree]).toEqual([3, 5, 7]);
485
503
  tree.iterationType = IterationType.RECURSIVE;
486
- // @ts-ignore
487
504
  expect([...tree]).toEqual([3, 5, 7]);
488
505
  tree.iterationType = IterationType.ITERATIVE;
489
506
 
@@ -54,7 +54,6 @@ describe('DoublyLinkedList Operation Test', () => {
54
54
  });
55
55
 
56
56
  it('should insertAfter tail', () => {
57
- // @ts-ignore
58
57
  expect([...list]).toEqual([1, 2, 3, 4, 5]);
59
58
  });
60
59
  });
@@ -441,7 +441,6 @@ describe('SinglyLinkedList', () => {
441
441
  list.push(3);
442
442
  const array = list.toArray();
443
443
  expect(array).toEqual([1, 2, 3]);
444
- // @ts-ignore
445
444
  expect([...list]).toEqual([1, 2, 3]);
446
445
  });
447
446