data-structure-typed 1.34.7 → 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 (167) 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 +314 -457
  8. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  9. package/dist/data-structures/binary-tree/avl-tree.js +64 -90
  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 +12 -31
  16. package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
  17. package/dist/data-structures/binary-tree/bst.js +157 -244
  18. package/dist/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/data-structures/binary-tree/rb-tree.js +20 -44
  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 +168 -239
  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 +351 -585
  30. package/dist/data-structures/graph/abstract-graph.js.map +1 -1
  31. package/dist/data-structures/graph/directed-graph.js +152 -282
  32. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  33. package/dist/data-structures/graph/map-graph.js +47 -88
  34. package/dist/data-structures/graph/map-graph.js.map +1 -1
  35. package/dist/data-structures/graph/undirected-graph.js +91 -180
  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 +33 -46
  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 +124 -123
  91. package/lib/data-structures/binary-tree/abstract-binary-tree.js +136 -216
  92. package/lib/data-structures/binary-tree/avl-tree.d.ts +19 -10
  93. package/lib/data-structures/binary-tree/avl-tree.js +35 -13
  94. package/lib/data-structures/binary-tree/binary-tree.d.ts +6 -6
  95. package/lib/data-structures/binary-tree/binary-tree.js +7 -7
  96. package/lib/data-structures/binary-tree/bst.d.ts +34 -34
  97. package/lib/data-structures/binary-tree/bst.js +86 -89
  98. package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
  99. package/lib/data-structures/binary-tree/rb-tree.js +4 -4
  100. package/lib/data-structures/binary-tree/tree-multiset.d.ts +40 -42
  101. package/lib/data-structures/binary-tree/tree-multiset.js +76 -86
  102. package/lib/data-structures/graph/abstract-graph.d.ts +62 -62
  103. package/lib/data-structures/graph/abstract-graph.js +86 -86
  104. package/lib/data-structures/graph/directed-graph.d.ts +51 -51
  105. package/lib/data-structures/graph/directed-graph.js +63 -63
  106. package/lib/data-structures/graph/map-graph.d.ts +13 -13
  107. package/lib/data-structures/graph/map-graph.js +12 -12
  108. package/lib/data-structures/graph/undirected-graph.d.ts +30 -30
  109. package/lib/data-structures/graph/undirected-graph.js +32 -32
  110. package/lib/data-structures/priority-queue/priority-queue.d.ts +3 -3
  111. package/lib/data-structures/priority-queue/priority-queue.js +3 -3
  112. package/lib/data-structures/tree/tree.d.ts +4 -4
  113. package/lib/data-structures/tree/tree.js +6 -6
  114. package/lib/interfaces/abstract-binary-tree.d.ts +37 -42
  115. package/lib/interfaces/abstract-graph.d.ts +13 -13
  116. package/lib/interfaces/avl-tree.d.ts +6 -4
  117. package/lib/interfaces/bst.d.ts +10 -9
  118. package/lib/interfaces/directed-graph.d.ts +5 -5
  119. package/lib/interfaces/rb-tree.d.ts +2 -2
  120. package/lib/interfaces/undirected-graph.d.ts +2 -2
  121. package/lib/types/data-structures/abstract-binary-tree.d.ts +3 -3
  122. package/lib/types/data-structures/abstract-binary-tree.js +0 -1
  123. package/lib/types/data-structures/abstract-graph.d.ts +2 -2
  124. package/lib/types/data-structures/bst.d.ts +2 -2
  125. package/lib/types/data-structures/tree-multiset.d.ts +1 -1
  126. package/lib/types/utils/validate-type.d.ts +8 -8
  127. package/package.json +6 -6
  128. package/scripts/rename_clear_files.sh +29 -0
  129. package/src/data-structures/binary-tree/abstract-binary-tree.ts +241 -293
  130. package/src/data-structures/binary-tree/avl-tree.ts +43 -14
  131. package/src/data-structures/binary-tree/binary-tree.ts +8 -8
  132. package/src/data-structures/binary-tree/bst.ts +101 -96
  133. package/src/data-structures/binary-tree/rb-tree.ts +9 -9
  134. package/src/data-structures/binary-tree/tree-multiset.ts +82 -94
  135. package/src/data-structures/graph/abstract-graph.ts +114 -109
  136. package/src/data-structures/graph/directed-graph.ts +77 -77
  137. package/src/data-structures/graph/map-graph.ts +20 -15
  138. package/src/data-structures/graph/undirected-graph.ts +39 -39
  139. package/src/data-structures/priority-queue/priority-queue.ts +3 -3
  140. package/src/data-structures/tree/tree.ts +7 -7
  141. package/src/interfaces/abstract-binary-tree.ts +37 -50
  142. package/src/interfaces/abstract-graph.ts +13 -13
  143. package/src/interfaces/avl-tree.ts +6 -4
  144. package/src/interfaces/bst.ts +9 -9
  145. package/src/interfaces/directed-graph.ts +5 -5
  146. package/src/interfaces/rb-tree.ts +2 -2
  147. package/src/interfaces/undirected-graph.ts +2 -2
  148. package/src/types/data-structures/abstract-binary-tree.ts +3 -4
  149. package/src/types/data-structures/abstract-graph.ts +2 -2
  150. package/src/types/data-structures/bst.ts +2 -2
  151. package/src/types/data-structures/tree-multiset.ts +1 -1
  152. package/src/types/utils/validate-type.ts +10 -10
  153. package/test/integration/avl-tree.test.ts +24 -24
  154. package/test/integration/bst.test.ts +71 -71
  155. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +28 -28
  156. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +4 -12
  157. package/test/unit/data-structures/binary-tree/bst.test.ts +79 -79
  158. package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
  159. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +80 -80
  160. package/test/unit/data-structures/graph/directed-graph.test.ts +8 -8
  161. package/test/unit/data-structures/graph/map-graph.test.ts +4 -4
  162. package/test/unit/data-structures/graph/overall.test.ts +2 -2
  163. package/test/unit/data-structures/graph/undirected-graph.test.ts +1 -1
  164. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +4 -5
  165. package/test/unit/data-structures/tree/tree.test.ts +2 -2
  166. package/umd/bundle.min.js +1 -1
  167. package/umd/bundle.min.js.map +1 -1
@@ -8,10 +8,10 @@ describe('BinaryTreeNode', () => {
8
8
 
9
9
  it('should set and get the ID correctly', () => {
10
10
  const node = new BinaryTreeNode<number>(1);
11
- expect(node.id).toBe(1);
11
+ expect(node.key).toBe(1);
12
12
 
13
- node.id = 2;
14
- expect(node.id).toBe(2);
13
+ node.key = 2;
14
+ expect(node.key).toBe(2);
15
15
  });
16
16
 
17
17
  it('should set and get the value correctly', () => {
@@ -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
  });
@@ -10,7 +10,7 @@ describe('BST operations test', () => {
10
10
  bst.addMany(idsAndValues, idsAndValues);
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('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);
@@ -44,23 +44,23 @@ 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');
48
- expect(dfsInorderNodes[0].id).toBe(1);
49
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
47
+ const dfsInorderNodes = bst.dfs('in', 'node');
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
- const bfsNodesAfterBalanced = bst.BFS('node');
55
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
56
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
54
+ const bfsNodesAfterBalanced = bst.bfs('node');
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('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('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('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('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('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('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('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('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('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('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('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,53 +163,53 @@ describe('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
 
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');
178
- expect(bfsNodes[0].id).toBe(2);
179
- expect(bfsNodes[1].id).toBe(12);
180
- expect(bfsNodes[2].id).toBe(16);
177
+ const bfsNodes = bst.bfs('node');
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('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);
@@ -242,23 +242,23 @@ 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');
246
- expect(dfsInorderNodes[0].id).toBe(1);
247
- expect(dfsInorderNodes[dfsInorderNodes.length - 1].id).toBe(16);
245
+ const dfsInorderNodes = objBST.dfs('in', 'node');
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
- const bfsNodesAfterBalanced = objBST.BFS('node');
253
- expect(bfsNodesAfterBalanced[0].id).toBe(8);
254
- expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].id).toBe(16);
252
+ const bfsNodesAfterBalanced = objBST.bfs('node');
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('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('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('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('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('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('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('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('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('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('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('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,20 +361,20 @@ describe('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
 
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');
376
- expect(bfsNodes[0].id).toBe(2);
377
- expect(bfsNodes[1].id).toBe(12);
378
- expect(bfsNodes[2].id).toBe(16);
375
+ const bfsNodes = objBST.bfs('node');
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
  });
@@ -17,38 +17,38 @@ describe('Overall BinaryTree Test', () => {
17
17
  expect(bst.getHeight()).toBe(5); // true
18
18
  expect(bst.getDepth(6)).toBe(3); // true
19
19
  const leftMost = bst.getLeftMost();
20
- leftMost?.id === 1; // true
21
- expect(leftMost?.id).toBe(1);
20
+ leftMost?.key === 1; // true
21
+ expect(leftMost?.key).toBe(1);
22
22
  bst.remove(6);
23
23
  bst.get(6); // null
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
 
31
- const objBST = new BST<BSTNode<{id: number; keyA: number}>>();
32
- objBST.add(11, {id: 11, keyA: 11});
33
- objBST.add(3, {id: 3, keyA: 3});
31
+ const objBST = new BST<BSTNode<{key: number; keyA: number}>>();
32
+ objBST.add(11, {key: 11, keyA: 11});
33
+ objBST.add(3, {key: 3, keyA: 3});
34
34
 
35
35
  objBST.addMany(
36
36
  [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5],
37
37
  [
38
- {id: 15, keyA: 15},
39
- {id: 1, keyA: 1},
40
- {id: 8, keyA: 8},
41
- {id: 13, keyA: 13},
42
- {id: 16, keyA: 16},
43
- {id: 2, keyA: 2},
44
- {id: 6, keyA: 6},
45
- {id: 9, keyA: 9},
46
- {id: 12, keyA: 12},
47
- {id: 14, keyA: 14},
48
- {id: 4, keyA: 4},
49
- {id: 7, keyA: 7},
50
- {id: 10, keyA: 10},
51
- {id: 5, keyA: 5}
38
+ {key: 15, keyA: 15},
39
+ {key: 1, keyA: 1},
40
+ {key: 8, keyA: 8},
41
+ {key: 13, keyA: 13},
42
+ {key: 16, keyA: 16},
43
+ {key: 2, keyA: 2},
44
+ {key: 6, keyA: 6},
45
+ {key: 9, keyA: 9},
46
+ {key: 12, keyA: 12},
47
+ {key: 14, keyA: 14},
48
+ {key: 4, keyA: 4},
49
+ {key: 7, keyA: 7},
50
+ {key: 10, keyA: 10},
51
+ {key: 5, keyA: 5}
52
52
  ]
53
53
  );
54
54