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
@@ -10,7 +10,7 @@ describe('Individual package BST operations test', () => {
10
10
  bst.addMany(idsOrVals, idsOrVals);
11
11
  expect(bst.root).toBeInstanceOf(BSTNode);
12
12
 
13
- if (bst.root) expect(bst.root.id).toBe(11);
13
+ if (bst.root) expect(bst.root.key).toBe(11);
14
14
 
15
15
  expect(bst.size).toBe(16);
16
16
 
@@ -21,17 +21,17 @@ describe('Individual package BST operations test', () => {
21
21
  expect(node6 && bst.getDepth(6)).toBe(3);
22
22
 
23
23
  const nodeId10 = bst.get(10);
24
- expect(nodeId10?.id).toBe(10);
24
+ expect(nodeId10?.key).toBe(10);
25
25
 
26
26
  const nodeVal9 = bst.get(9, 'val');
27
- expect(nodeVal9?.id).toBe(9);
27
+ expect(nodeVal9?.key).toBe(9);
28
28
 
29
29
  const leftMost = bst.getLeftMost();
30
- expect(leftMost?.id).toBe(1);
30
+ expect(leftMost?.key).toBe(1);
31
31
 
32
32
  const node15 = bst.get(15);
33
33
  const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
34
- expect(minNodeBySpecificNode?.id).toBe(12);
34
+ expect(minNodeBySpecificNode?.key).toBe(12);
35
35
 
36
36
  const subTreeSum = node15 && bst.subTreeSum(15);
37
37
  expect(subTreeSum).toBe(70);
@@ -45,22 +45,22 @@ describe('Individual package BST operations test', () => {
45
45
  expect(node11).toBeInstanceOf(BSTNode);
46
46
 
47
47
  const dfsInorderNodes = bst.DFS('in', 'node');
48
- expect(dfsInorderNodes[0].id).toBe(1);
49
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
48
+ expect(dfsInorderNodes[0].key).toBe(1);
49
+ expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
50
50
 
51
51
  bst.perfectlyBalance();
52
52
  expect(bst.isPerfectlyBalanced()).toBe(true);
53
53
 
54
54
  const bfsNodesAfterBalanced = bst.BFS('node');
55
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
56
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
55
+ expect(bfsNodesAfterBalanced[0].key).toBe(8);
56
+ expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
57
57
 
58
58
  const removed11 = bst.remove(11);
59
59
  expect(removed11).toBeInstanceOf(Array);
60
60
  expect(removed11[0]).toBeDefined();
61
61
  expect(removed11[0].deleted).toBeDefined();
62
62
 
63
- if (removed11[0].deleted) expect(removed11[0].deleted.id).toBe(11);
63
+ if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
64
64
 
65
65
  expect(bst.isAVLBalanced()).toBe(true);
66
66
 
@@ -70,7 +70,7 @@ describe('Individual package BST operations test', () => {
70
70
  expect(removed1).toBeInstanceOf(Array);
71
71
  expect(removed1[0]).toBeDefined();
72
72
  expect(removed1[0].deleted).toBeDefined();
73
- if (removed1[0].deleted) expect(removed1[0].deleted.id).toBe(1);
73
+ if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
74
74
 
75
75
  expect(bst.isAVLBalanced()).toBe(true);
76
76
 
@@ -80,7 +80,7 @@ describe('Individual package BST operations test', () => {
80
80
  expect(removed4).toBeInstanceOf(Array);
81
81
  expect(removed4[0]).toBeDefined();
82
82
  expect(removed4[0].deleted).toBeDefined();
83
- if (removed4[0].deleted) expect(removed4[0].deleted.id).toBe(4);
83
+ if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
84
84
  expect(bst.isAVLBalanced()).toBe(true);
85
85
  expect(bst.getHeight()).toBe(4);
86
86
 
@@ -88,7 +88,7 @@ describe('Individual package BST operations test', () => {
88
88
  expect(removed10).toBeInstanceOf(Array);
89
89
  expect(removed10[0]).toBeDefined();
90
90
  expect(removed10[0].deleted).toBeDefined();
91
- if (removed10[0].deleted) expect(removed10[0].deleted.id).toBe(10);
91
+ if (removed10[0].deleted) expect(removed10[0].deleted.key).toBe(10);
92
92
  expect(bst.isAVLBalanced()).toBe(false);
93
93
  expect(bst.getHeight()).toBe(4);
94
94
 
@@ -96,7 +96,7 @@ describe('Individual package BST operations test', () => {
96
96
  expect(removed15).toBeInstanceOf(Array);
97
97
  expect(removed15[0]).toBeDefined();
98
98
  expect(removed15[0].deleted).toBeDefined();
99
- if (removed15[0].deleted) expect(removed15[0].deleted.id).toBe(15);
99
+ if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
100
100
 
101
101
  expect(bst.isAVLBalanced()).toBe(true);
102
102
  expect(bst.getHeight()).toBe(3);
@@ -105,7 +105,7 @@ describe('Individual package BST operations test', () => {
105
105
  expect(removed5).toBeInstanceOf(Array);
106
106
  expect(removed5[0]).toBeDefined();
107
107
  expect(removed5[0].deleted).toBeDefined();
108
- if (removed5[0].deleted) expect(removed5[0].deleted.id).toBe(5);
108
+ if (removed5[0].deleted) expect(removed5[0].deleted.key).toBe(5);
109
109
 
110
110
  expect(bst.isAVLBalanced()).toBe(true);
111
111
  expect(bst.getHeight()).toBe(3);
@@ -114,7 +114,7 @@ describe('Individual package BST operations test', () => {
114
114
  expect(removed13).toBeInstanceOf(Array);
115
115
  expect(removed13[0]).toBeDefined();
116
116
  expect(removed13[0].deleted).toBeDefined();
117
- if (removed13[0].deleted) expect(removed13[0].deleted.id).toBe(13);
117
+ if (removed13[0].deleted) expect(removed13[0].deleted.key).toBe(13);
118
118
  expect(bst.isAVLBalanced()).toBe(true);
119
119
  expect(bst.getHeight()).toBe(3);
120
120
 
@@ -122,7 +122,7 @@ describe('Individual package BST operations test', () => {
122
122
  expect(removed3).toBeInstanceOf(Array);
123
123
  expect(removed3[0]).toBeDefined();
124
124
  expect(removed3[0].deleted).toBeDefined();
125
- if (removed3[0].deleted) expect(removed3[0].deleted.id).toBe(3);
125
+ if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
126
126
  expect(bst.isAVLBalanced()).toBe(false);
127
127
  expect(bst.getHeight()).toBe(3);
128
128
 
@@ -130,7 +130,7 @@ describe('Individual package BST operations test', () => {
130
130
  expect(removed8).toBeInstanceOf(Array);
131
131
  expect(removed8[0]).toBeDefined();
132
132
  expect(removed8[0].deleted).toBeDefined();
133
- if (removed8[0].deleted) expect(removed8[0].deleted.id).toBe(8);
133
+ if (removed8[0].deleted) expect(removed8[0].deleted.key).toBe(8);
134
134
  expect(bst.isAVLBalanced()).toBe(true);
135
135
  expect(bst.getHeight()).toBe(3);
136
136
 
@@ -138,7 +138,7 @@ describe('Individual package BST operations test', () => {
138
138
  expect(removed6).toBeInstanceOf(Array);
139
139
  expect(removed6[0]).toBeDefined();
140
140
  expect(removed6[0].deleted).toBeDefined();
141
- if (removed6[0].deleted) expect(removed6[0].deleted.id).toBe(6);
141
+ if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
142
142
  expect(bst.remove(6).length).toBe(0);
143
143
  expect(bst.isAVLBalanced()).toBe(false);
144
144
  expect(bst.getHeight()).toBe(3);
@@ -147,7 +147,7 @@ describe('Individual package BST operations test', () => {
147
147
  expect(removed7).toBeInstanceOf(Array);
148
148
  expect(removed7[0]).toBeDefined();
149
149
  expect(removed7[0].deleted).toBeDefined();
150
- if (removed7[0].deleted) expect(removed7[0].deleted.id).toBe(7);
150
+ if (removed7[0].deleted) expect(removed7[0].deleted.key).toBe(7);
151
151
  expect(bst.isAVLBalanced()).toBe(false);
152
152
  expect(bst.getHeight()).toBe(3);
153
153
 
@@ -155,7 +155,7 @@ describe('Individual package BST operations test', () => {
155
155
  expect(removed9).toBeInstanceOf(Array);
156
156
  expect(removed9[0]).toBeDefined();
157
157
  expect(removed9[0].deleted).toBeDefined();
158
- if (removed9[0].deleted) expect(removed9[0].deleted.id).toBe(9);
158
+ if (removed9[0].deleted) expect(removed9[0].deleted.key).toBe(9);
159
159
  expect(bst.isAVLBalanced()).toBe(false);
160
160
  expect(bst.getHeight()).toBe(3);
161
161
 
@@ -163,7 +163,7 @@ describe('Individual package BST operations test', () => {
163
163
  expect(removed14).toBeInstanceOf(Array);
164
164
  expect(removed14[0]).toBeDefined();
165
165
  expect(removed14[0].deleted).toBeDefined();
166
- if (removed14[0].deleted) expect(removed14[0].deleted.id).toBe(14);
166
+ if (removed14[0].deleted) expect(removed14[0].deleted.key).toBe(14);
167
167
  expect(bst.isAVLBalanced()).toBe(false);
168
168
  expect(bst.getHeight()).toBe(2);
169
169
 
@@ -175,41 +175,41 @@ describe('Individual package BST operations test', () => {
175
175
  expect(bfsIDs[2]).toBe(16);
176
176
 
177
177
  const bfsNodes = bst.BFS('node');
178
- expect(bfsNodes[0].id).toBe(2);
179
- expect(bfsNodes[1].id).toBe(12);
180
- expect(bfsNodes[2].id).toBe(16);
178
+ expect(bfsNodes[0].key).toBe(2);
179
+ expect(bfsNodes[1].key).toBe(12);
180
+ expect(bfsNodes[2].key).toBe(16);
181
181
  });
182
182
 
183
183
  it('should perform various operations on a Binary Search Tree with object values', () => {
184
- const objBST = new BST<BSTNode<{id: number; keyA: number}>>();
184
+ const objBST = new BST<BSTNode<{key: number; keyA: number}>>();
185
185
  expect(objBST).toBeInstanceOf(BST);
186
- objBST.add(11, {id: 11, keyA: 11});
187
- objBST.add(3, {id: 3, keyA: 3});
186
+ objBST.add(11, {key: 11, keyA: 11});
187
+ objBST.add(3, {key: 3, keyA: 3});
188
188
  const values = [
189
- {id: 15, keyA: 15},
190
- {id: 1, keyA: 1},
191
- {id: 8, keyA: 8},
192
- {id: 13, keyA: 13},
193
- {id: 16, keyA: 16},
194
- {id: 2, keyA: 2},
195
- {id: 6, keyA: 6},
196
- {id: 9, keyA: 9},
197
- {id: 12, keyA: 12},
198
- {id: 14, keyA: 14},
199
- {id: 4, keyA: 4},
200
- {id: 7, keyA: 7},
201
- {id: 10, keyA: 10},
202
- {id: 5, keyA: 5}
189
+ {key: 15, keyA: 15},
190
+ {key: 1, keyA: 1},
191
+ {key: 8, keyA: 8},
192
+ {key: 13, keyA: 13},
193
+ {key: 16, keyA: 16},
194
+ {key: 2, keyA: 2},
195
+ {key: 6, keyA: 6},
196
+ {key: 9, keyA: 9},
197
+ {key: 12, keyA: 12},
198
+ {key: 14, keyA: 14},
199
+ {key: 4, keyA: 4},
200
+ {key: 7, keyA: 7},
201
+ {key: 10, keyA: 10},
202
+ {key: 5, keyA: 5}
203
203
  ];
204
204
 
205
205
  objBST.addMany(
206
- values.map(item => item.id),
206
+ values.map(item => item.key),
207
207
  values
208
208
  );
209
209
 
210
210
  expect(objBST.root).toBeInstanceOf(BSTNode);
211
211
 
212
- if (objBST.root) expect(objBST.root.id).toBe(11);
212
+ if (objBST.root) expect(objBST.root.key).toBe(11);
213
213
 
214
214
  expect(objBST.has(6)).toBe(true);
215
215
 
@@ -217,19 +217,19 @@ describe('Individual package BST operations test', () => {
217
217
  expect(node6 && objBST.getHeight(node6)).toBe(2);
218
218
  expect(node6 && objBST.getDepth(node6)).toBe(3);
219
219
 
220
- const nodeId10 = objBST.get(10, 'id');
221
- expect(nodeId10?.id).toBe(10);
220
+ const nodeId10 = objBST.get(10, 'key');
221
+ expect(nodeId10?.key).toBe(10);
222
222
 
223
- const nodeVal9 = objBST.get(9, 'id');
224
- expect(nodeVal9?.id).toBe(9);
223
+ const nodeVal9 = objBST.get(9, 'key');
224
+ expect(nodeVal9?.key).toBe(9);
225
225
 
226
226
  const leftMost = objBST.getLeftMost();
227
- expect(leftMost?.id).toBe(1);
227
+ expect(leftMost?.key).toBe(1);
228
228
 
229
229
  const node15 = objBST.get(15);
230
- expect(node15?.val).toEqual({id: 15, keyA: 15});
230
+ expect(node15?.val).toEqual({key: 15, keyA: 15});
231
231
  const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
232
- expect(minNodeBySpecificNode?.id).toBe(12);
232
+ expect(minNodeBySpecificNode?.key).toBe(12);
233
233
 
234
234
  const subTreeSum = node15 && objBST.subTreeSum(node15);
235
235
  expect(subTreeSum).toBe(70);
@@ -243,22 +243,22 @@ describe('Individual package BST operations test', () => {
243
243
  expect(node11).toBeInstanceOf(BSTNode);
244
244
 
245
245
  const dfsInorderNodes = objBST.DFS('in', 'node');
246
- expect(dfsInorderNodes[0].id).toBe(1);
247
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
246
+ expect(dfsInorderNodes[0].key).toBe(1);
247
+ expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
248
248
 
249
249
  objBST.perfectlyBalance();
250
250
  expect(objBST.isPerfectlyBalanced()).toBe(true);
251
251
 
252
252
  const bfsNodesAfterBalanced = objBST.BFS('node');
253
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
254
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
253
+ expect(bfsNodesAfterBalanced[0].key).toBe(8);
254
+ expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
255
255
 
256
256
  const removed11 = objBST.remove(11);
257
257
  expect(removed11).toBeInstanceOf(Array);
258
258
  expect(removed11[0]).toBeDefined();
259
259
  expect(removed11[0].deleted).toBeDefined();
260
260
 
261
- if (removed11[0].deleted) expect(removed11[0].deleted.id).toBe(11);
261
+ if (removed11[0].deleted) expect(removed11[0].deleted.key).toBe(11);
262
262
 
263
263
  expect(objBST.isAVLBalanced()).toBe(true);
264
264
 
@@ -268,7 +268,7 @@ describe('Individual package BST operations test', () => {
268
268
  expect(removed1).toBeInstanceOf(Array);
269
269
  expect(removed1[0]).toBeDefined();
270
270
  expect(removed1[0].deleted).toBeDefined();
271
- if (removed1[0].deleted) expect(removed1[0].deleted.id).toBe(1);
271
+ if (removed1[0].deleted) expect(removed1[0].deleted.key).toBe(1);
272
272
 
273
273
  expect(objBST.isAVLBalanced()).toBe(true);
274
274
 
@@ -278,7 +278,7 @@ describe('Individual package BST operations test', () => {
278
278
  expect(removed4).toBeInstanceOf(Array);
279
279
  expect(removed4[0]).toBeDefined();
280
280
  expect(removed4[0].deleted).toBeDefined();
281
- if (removed4[0].deleted) expect(removed4[0].deleted.id).toBe(4);
281
+ if (removed4[0].deleted) expect(removed4[0].deleted.key).toBe(4);
282
282
  expect(objBST.isAVLBalanced()).toBe(true);
283
283
  expect(objBST.getHeight()).toBe(4);
284
284
 
@@ -286,7 +286,7 @@ describe('Individual package BST operations test', () => {
286
286
  expect(removed10).toBeInstanceOf(Array);
287
287
  expect(removed10[0]).toBeDefined();
288
288
  expect(removed10[0].deleted).toBeDefined();
289
- if (removed10[0].deleted) expect(removed10[0].deleted.id).toBe(10);
289
+ if (removed10[0].deleted) expect(removed10[0].deleted.key).toBe(10);
290
290
  expect(objBST.isAVLBalanced()).toBe(false);
291
291
  expect(objBST.getHeight()).toBe(4);
292
292
 
@@ -294,7 +294,7 @@ describe('Individual package BST operations test', () => {
294
294
  expect(removed15).toBeInstanceOf(Array);
295
295
  expect(removed15[0]).toBeDefined();
296
296
  expect(removed15[0].deleted).toBeDefined();
297
- if (removed15[0].deleted) expect(removed15[0].deleted.id).toBe(15);
297
+ if (removed15[0].deleted) expect(removed15[0].deleted.key).toBe(15);
298
298
 
299
299
  expect(objBST.isAVLBalanced()).toBe(true);
300
300
  expect(objBST.getHeight()).toBe(3);
@@ -303,7 +303,7 @@ describe('Individual package BST operations test', () => {
303
303
  expect(removed5).toBeInstanceOf(Array);
304
304
  expect(removed5[0]).toBeDefined();
305
305
  expect(removed5[0].deleted).toBeDefined();
306
- if (removed5[0].deleted) expect(removed5[0].deleted.id).toBe(5);
306
+ if (removed5[0].deleted) expect(removed5[0].deleted.key).toBe(5);
307
307
 
308
308
  expect(objBST.isAVLBalanced()).toBe(true);
309
309
  expect(objBST.getHeight()).toBe(3);
@@ -312,7 +312,7 @@ describe('Individual package BST operations test', () => {
312
312
  expect(removed13).toBeInstanceOf(Array);
313
313
  expect(removed13[0]).toBeDefined();
314
314
  expect(removed13[0].deleted).toBeDefined();
315
- if (removed13[0].deleted) expect(removed13[0].deleted.id).toBe(13);
315
+ if (removed13[0].deleted) expect(removed13[0].deleted.key).toBe(13);
316
316
  expect(objBST.isAVLBalanced()).toBe(true);
317
317
  expect(objBST.getHeight()).toBe(3);
318
318
 
@@ -320,7 +320,7 @@ describe('Individual package BST operations test', () => {
320
320
  expect(removed3).toBeInstanceOf(Array);
321
321
  expect(removed3[0]).toBeDefined();
322
322
  expect(removed3[0].deleted).toBeDefined();
323
- if (removed3[0].deleted) expect(removed3[0].deleted.id).toBe(3);
323
+ if (removed3[0].deleted) expect(removed3[0].deleted.key).toBe(3);
324
324
  expect(objBST.isAVLBalanced()).toBe(false);
325
325
  expect(objBST.getHeight()).toBe(3);
326
326
 
@@ -328,7 +328,7 @@ describe('Individual package BST operations test', () => {
328
328
  expect(removed8).toBeInstanceOf(Array);
329
329
  expect(removed8[0]).toBeDefined();
330
330
  expect(removed8[0].deleted).toBeDefined();
331
- if (removed8[0].deleted) expect(removed8[0].deleted.id).toBe(8);
331
+ if (removed8[0].deleted) expect(removed8[0].deleted.key).toBe(8);
332
332
  expect(objBST.isAVLBalanced()).toBe(true);
333
333
  expect(objBST.getHeight()).toBe(3);
334
334
 
@@ -336,7 +336,7 @@ describe('Individual package BST operations test', () => {
336
336
  expect(removed6).toBeInstanceOf(Array);
337
337
  expect(removed6[0]).toBeDefined();
338
338
  expect(removed6[0].deleted).toBeDefined();
339
- if (removed6[0].deleted) expect(removed6[0].deleted.id).toBe(6);
339
+ if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
340
340
  expect(objBST.remove(6).length).toBe(0);
341
341
  expect(objBST.isAVLBalanced()).toBe(false);
342
342
  expect(objBST.getHeight()).toBe(3);
@@ -345,7 +345,7 @@ describe('Individual package BST operations test', () => {
345
345
  expect(removed7).toBeInstanceOf(Array);
346
346
  expect(removed7[0]).toBeDefined();
347
347
  expect(removed7[0].deleted).toBeDefined();
348
- if (removed7[0].deleted) expect(removed7[0].deleted.id).toBe(7);
348
+ if (removed7[0].deleted) expect(removed7[0].deleted.key).toBe(7);
349
349
  expect(objBST.isAVLBalanced()).toBe(false);
350
350
  expect(objBST.getHeight()).toBe(3);
351
351
 
@@ -353,7 +353,7 @@ describe('Individual package BST operations test', () => {
353
353
  expect(removed9).toBeInstanceOf(Array);
354
354
  expect(removed9[0]).toBeDefined();
355
355
  expect(removed9[0].deleted).toBeDefined();
356
- if (removed9[0].deleted) expect(removed9[0].deleted.id).toBe(9);
356
+ if (removed9[0].deleted) expect(removed9[0].deleted.key).toBe(9);
357
357
  expect(objBST.isAVLBalanced()).toBe(false);
358
358
  expect(objBST.getHeight()).toBe(3);
359
359
 
@@ -361,7 +361,7 @@ describe('Individual package BST operations test', () => {
361
361
  expect(removed14).toBeInstanceOf(Array);
362
362
  expect(removed14[0]).toBeDefined();
363
363
  expect(removed14[0].deleted).toBeDefined();
364
- if (removed14[0].deleted) expect(removed14[0].deleted.id).toBe(14);
364
+ if (removed14[0].deleted) expect(removed14[0].deleted.key).toBe(14);
365
365
  expect(objBST.isAVLBalanced()).toBe(false);
366
366
  expect(objBST.getHeight()).toBe(2);
367
367
 
@@ -373,8 +373,8 @@ describe('Individual package BST operations test', () => {
373
373
  expect(bfsIDs[2]).toBe(16);
374
374
 
375
375
  const bfsNodes = objBST.BFS('node');
376
- expect(bfsNodes[0].id).toBe(2);
377
- expect(bfsNodes[1].id).toBe(12);
378
- expect(bfsNodes[2].id).toBe(16);
376
+ expect(bfsNodes[0].key).toBe(2);
377
+ expect(bfsNodes[1].key).toBe(12);
378
+ expect(bfsNodes[2].key).toBe(16);
379
379
  });
380
380
  });
@@ -31,12 +31,12 @@ describe('AVL Tree Test', () => {
31
31
  // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
32
32
  expect(node15?.val).toBe(15);
33
33
 
34
- const dfs = tree.DFS('in', 'node');
34
+ const dfs = tree.dfs('in', 'node');
35
35
  expect(dfs[0].key).toBe(1);
36
36
  expect(dfs[dfs.length - 1].key).toBe(16);
37
37
 
38
38
  tree.perfectlyBalance();
39
- const bfs = tree.BFS('node');
39
+ const bfs = tree.bfs('node');
40
40
  expect(tree.isPerfectlyBalanced()).toBe(true);
41
41
  expect(bfs[0].key).toBe(8);
42
42
  expect(bfs[bfs.length - 1].key).toBe(16);
@@ -95,12 +95,12 @@ describe('AVL Tree Test', () => {
95
95
  expect(tree.getHeight()).toBe(1);
96
96
 
97
97
  expect(tree.isAVLBalanced()).toBe(true);
98
- const lastBFSIds = tree.BFS();
98
+ const lastBFSIds = tree.bfs();
99
99
  expect(lastBFSIds[0]).toBe(12);
100
100
  expect(lastBFSIds[1]).toBe(2);
101
101
  expect(lastBFSIds[2]).toBe(16);
102
102
 
103
- const lastBFSNodes = tree.BFS('node');
103
+ const lastBFSNodes = tree.bfs('node');
104
104
  expect(lastBFSNodes[0].key).toBe(12);
105
105
  expect(lastBFSNodes[1].key).toBe(2);
106
106
  expect(lastBFSNodes[2].key).toBe(16);
@@ -52,14 +52,6 @@ describe('BinaryTreeNode', () => {
52
52
  expect(node1.left).toBe(node2);
53
53
  });
54
54
 
55
- it('should set and get the height correctly', () => {
56
- const node = new BinaryTreeNode<number>(1);
57
- expect(node.height).toBe(0);
58
-
59
- node.height = 3;
60
- expect(node.height).toBe(3);
61
- });
62
-
63
55
  it('should determine family position correctly', () => {
64
56
  const root = new BinaryTreeNode<number>(1);
65
57
  const leftChild = new BinaryTreeNode<number>(2);
@@ -122,7 +114,7 @@ describe('BinaryTree', () => {
122
114
  binaryTree.add(5);
123
115
  binaryTree.add(7);
124
116
 
125
- const inOrder = binaryTree.DFS('in');
117
+ const inOrder = binaryTree.dfs('in');
126
118
 
127
119
  expect(inOrder).toEqual([1, 2, 3, 4, 5, 6, 7]);
128
120
  });
@@ -44,14 +44,14 @@ describe('BST operations test', () => {
44
44
  const node11 = bst.get(11);
45
45
  expect(node11).toBeInstanceOf(BSTNode);
46
46
 
47
- const dfsInorderNodes = bst.DFS('in', 'node');
47
+ const dfsInorderNodes = bst.dfs('in', 'node');
48
48
  expect(dfsInorderNodes[0].key).toBe(1);
49
49
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
50
50
 
51
51
  bst.perfectlyBalance();
52
52
  expect(bst.isPerfectlyBalanced()).toBe(true);
53
53
 
54
- const bfsNodesAfterBalanced = bst.BFS('node');
54
+ const bfsNodesAfterBalanced = bst.bfs('node');
55
55
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
56
56
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
57
57
 
@@ -169,12 +169,12 @@ describe('BST operations test', () => {
169
169
 
170
170
  expect(bst.isAVLBalanced()).toBe(false);
171
171
 
172
- const bfsIDs = bst.BFS();
172
+ const bfsIDs = bst.bfs();
173
173
  expect(bfsIDs[0]).toBe(2);
174
174
  expect(bfsIDs[1]).toBe(12);
175
175
  expect(bfsIDs[2]).toBe(16);
176
176
 
177
- const bfsNodes = bst.BFS('node');
177
+ const bfsNodes = bst.bfs('node');
178
178
  expect(bfsNodes[0].key).toBe(2);
179
179
  expect(bfsNodes[1].key).toBe(12);
180
180
  expect(bfsNodes[2].key).toBe(16);
@@ -242,14 +242,14 @@ describe('BST operations test', () => {
242
242
  const node11 = objBST.get(11);
243
243
  expect(node11).toBeInstanceOf(BSTNode);
244
244
 
245
- const dfsInorderNodes = objBST.DFS('in', 'node');
245
+ const dfsInorderNodes = objBST.dfs('in', 'node');
246
246
  expect(dfsInorderNodes[0].key).toBe(1);
247
247
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
248
248
 
249
249
  objBST.perfectlyBalance();
250
250
  expect(objBST.isPerfectlyBalanced()).toBe(true);
251
251
 
252
- const bfsNodesAfterBalanced = objBST.BFS('node');
252
+ const bfsNodesAfterBalanced = objBST.bfs('node');
253
253
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
254
254
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
255
255
 
@@ -367,12 +367,12 @@ describe('BST operations test', () => {
367
367
 
368
368
  expect(objBST.isAVLBalanced()).toBe(false);
369
369
 
370
- const bfsIDs = objBST.BFS();
370
+ const bfsIDs = objBST.bfs();
371
371
  expect(bfsIDs[0]).toBe(2);
372
372
  expect(bfsIDs[1]).toBe(12);
373
373
  expect(bfsIDs[2]).toBe(16);
374
374
 
375
- const bfsNodes = objBST.BFS('node');
375
+ const bfsNodes = objBST.bfs('node');
376
376
  expect(bfsNodes[0].key).toBe(2);
377
377
  expect(bfsNodes[1].key).toBe(12);
378
378
  expect(bfsNodes[2].key).toBe(16);
@@ -24,7 +24,7 @@ describe('Overall BinaryTree Test', () => {
24
24
  expect(bst.get(6)).toBeNull();
25
25
  bst.isAVLBalanced(); // true or false
26
26
  expect(bst.isAVLBalanced()).toBe(true);
27
- const bfsIDs = bst.BFS();
27
+ const bfsIDs = bst.bfs();
28
28
  bfsIDs[0] === 11; // true
29
29
  expect(bfsIDs[0]).toBe(11);
30
30
 
@@ -15,7 +15,7 @@ describe('TreeMultiset operations test', () => {
15
15
 
16
16
  expect(treeMultiset.size).toBe(16);
17
17
  expect(treeMultiset.count).toBe(18);
18
- expect(treeMultiset.BFS('key'));
18
+ expect(treeMultiset.bfs('key'));
19
19
 
20
20
  expect(treeMultiset.has(6));
21
21
 
@@ -56,7 +56,7 @@ describe('TreeMultiset operations test', () => {
56
56
  expect(allGreaterNodesAdded);
57
57
  }
58
58
 
59
- const dfsInorderNodes = treeMultiset.DFS('in', 'node');
59
+ const dfsInorderNodes = treeMultiset.dfs('in', 'node');
60
60
  expect(dfsInorderNodes[0].key).toBe(1);
61
61
  expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
62
62
  expect(treeMultiset.isPerfectlyBalanced()).toBe(false);
@@ -66,7 +66,7 @@ describe('TreeMultiset operations test', () => {
66
66
  expect(treeMultiset.isPerfectlyBalanced()).toBe(true);
67
67
  expect(treeMultiset.isAVLBalanced()).toBe(true);
68
68
 
69
- const bfsNodesAfterBalanced = treeMultiset.BFS('node');
69
+ const bfsNodesAfterBalanced = treeMultiset.bfs('node');
70
70
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
71
71
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
72
72
 
@@ -187,13 +187,13 @@ describe('TreeMultiset operations test', () => {
187
187
 
188
188
  expect(treeMultiset.isAVLBalanced()).toBe(true);
189
189
 
190
- const bfsIDs = treeMultiset.BFS();
190
+ const bfsIDs = treeMultiset.bfs();
191
191
 
192
192
  expect(bfsIDs[0]).toBe(12);
193
193
  expect(bfsIDs[1]).toBe(2);
194
194
  expect(bfsIDs[2]).toBe(16);
195
195
 
196
- const bfsNodes = treeMultiset.BFS('node');
196
+ const bfsNodes = treeMultiset.bfs('node');
197
197
 
198
198
  expect(bfsNodes[0].key).toBe(12);
199
199
  expect(bfsNodes[1].key).toBe(2);
@@ -277,14 +277,14 @@ describe('TreeMultiset operations test', () => {
277
277
  // expect(allGreaterNodesAdded).toBeDefined();
278
278
  // }
279
279
  //
280
- // const dfsInorderNodes = objTreeMultiset.DFS('in', 'node');
280
+ // const dfsInorderNodes = objTreeMultiset.dfs('in', 'node');
281
281
  // expect(dfsInorderNodes[0].key).toBe(1);
282
282
  // expect(dfsInorderNodes[dfsInorderNodes.length - 1].key).toBe(16);
283
283
  //
284
284
  // objTreeMultiset.perfectlyBalance();
285
285
  // expect(objTreeMultiset.isPerfectlyBalanced()).toBe(true);
286
286
  //
287
- // const bfsNodesAfterBalanced = objTreeMultiset.BFS('node');
287
+ // const bfsNodesAfterBalanced = objTreeMultiset.bfs('node');
288
288
  // expect(bfsNodesAfterBalanced[0].key).toBe(8);
289
289
  // expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
290
290
  //
@@ -403,12 +403,12 @@ describe('TreeMultiset operations test', () => {
403
403
  //
404
404
  // expect(objTreeMultiset.isAVLBalanced()).toBe(false);
405
405
  //
406
- // const bfsIDs = objTreeMultiset.BFS();
406
+ // const bfsIDs = objTreeMultiset.bfs();
407
407
  // expect(bfsIDs[0]).toBe(2);
408
408
  // expect(bfsIDs[1]).toBe(12);
409
409
  // expect(bfsIDs[2]).toBe(16);
410
410
  //
411
- // const bfsNodes = objTreeMultiset.BFS('node');
411
+ // const bfsNodes = objTreeMultiset.bfs('node');
412
412
  // expect(bfsNodes[0].key).toBe(2);
413
413
  // expect(bfsNodes[1].key).toBe(12);
414
414
  // expect(bfsNodes[2].key).toBe(16);
@@ -48,14 +48,14 @@ describe('PriorityQueue Operation Test', () => {
48
48
  ).toEqual([1, 2, 3, 5, 6, 7, 8, 9, 10]);
49
49
  });
50
50
 
51
- it('should PriorityQueue clone, sort, getNodes, DFS work well', function () {
51
+ it('should PriorityQueue clone, sort, getNodes, dfs work well', function () {
52
52
  const minPQ1 = new PriorityQueue<number>({nodes: [2, 5, 8, 3, 1, 6, 7, 4], comparator: (a, b) => a - b});
53
53
  const clonedPriorityQueue = minPQ1.clone();
54
54
  expect(clonedPriorityQueue.getNodes()).toEqual(minPQ1.getNodes());
55
55
  expect(clonedPriorityQueue.sort()).toEqual([1, 2, 3, 4, 5, 6, 7, 8]);
56
- expect(minPQ1.DFS('in')).toEqual([4, 3, 2, 5, 1, 8, 6, 7]);
57
- expect(minPQ1.DFS('post')).toEqual([4, 3, 5, 2, 8, 7, 6, 1]);
58
- expect(minPQ1.DFS('pre')).toEqual([1, 2, 3, 4, 5, 6, 8, 7]);
56
+ expect(minPQ1.dfs('in')).toEqual([4, 3, 2, 5, 1, 8, 6, 7]);
57
+ expect(minPQ1.dfs('post')).toEqual([4, 3, 5, 2, 8, 7, 6, 1]);
58
+ expect(minPQ1.dfs('pre')).toEqual([1, 2, 3, 4, 5, 6, 8, 7]);
59
59
  });
60
60
  });
61
61