typescript-ds-lib 0.2.2 → 0.2.5

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 (39) hide show
  1. package/README.md +4 -2
  2. package/dist/lib/binary-search-tree.d.ts +4 -0
  3. package/dist/lib/binary-search-tree.js +39 -0
  4. package/dist/lib/binary-search-tree.js.map +1 -1
  5. package/dist/lib/hash-table.js +33 -29
  6. package/dist/lib/hash-table.js.map +1 -1
  7. package/dist/lib/linked-list.d.ts +5 -0
  8. package/dist/lib/linked-list.js +66 -0
  9. package/dist/lib/linked-list.js.map +1 -1
  10. package/dist/lib/map.d.ts +2 -0
  11. package/dist/lib/map.js +6 -0
  12. package/dist/lib/map.js.map +1 -1
  13. package/dist/lib/matrix.d.ts +16 -5
  14. package/dist/lib/matrix.js +126 -0
  15. package/dist/lib/matrix.js.map +1 -1
  16. package/dist/lib/priority-queue.d.ts +1 -1
  17. package/dist/lib/priority-queue.js +16 -20
  18. package/dist/lib/priority-queue.js.map +1 -1
  19. package/dist/lib/red-black-tree.d.ts +2 -0
  20. package/dist/lib/red-black-tree.js +10 -0
  21. package/dist/lib/red-black-tree.js.map +1 -1
  22. package/dist/lib/set.d.ts +2 -0
  23. package/dist/lib/set.js +14 -0
  24. package/dist/lib/set.js.map +1 -1
  25. package/dist/tests/binary-search-tree.test.js +148 -103
  26. package/dist/tests/binary-search-tree.test.js.map +1 -1
  27. package/dist/tests/linked-list.test.js +324 -129
  28. package/dist/tests/linked-list.test.js.map +1 -1
  29. package/dist/tests/map.test.js +161 -45
  30. package/dist/tests/map.test.js.map +1 -1
  31. package/dist/tests/matrix.test.js +90 -0
  32. package/dist/tests/matrix.test.js.map +1 -1
  33. package/dist/tests/priority-queue.test.js +59 -0
  34. package/dist/tests/priority-queue.test.js.map +1 -1
  35. package/dist/tests/red-black-tree.test.js +151 -58
  36. package/dist/tests/red-black-tree.test.js.map +1 -1
  37. package/dist/tests/set.test.js +104 -60
  38. package/dist/tests/set.test.js.map +1 -1
  39. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PriorityQueue = void 0;
4
+ const linked_list_1 = require("./linked-list");
4
5
  class PriorityQueue {
5
- items;
6
+ list;
6
7
  constructor() {
7
- this.items = [];
8
+ this.list = new linked_list_1.LinkedList();
8
9
  }
9
10
  /**
10
11
  * Adds an element with a priority to the queue.
@@ -12,49 +13,44 @@ class PriorityQueue {
12
13
  */
13
14
  push(element, priority) {
14
15
  const item = { element, priority };
15
- let added = false;
16
- for (let i = 0; i < this.items.length; i++) {
17
- if (priority > this.items[i].priority) {
18
- this.items.splice(i, 0, item);
19
- added = true;
20
- break;
21
- }
16
+ if (this.list.isEmpty()) {
17
+ this.list.pushBack(item);
18
+ return;
19
+ }
20
+ if (!this.list.insertBefore(item, (current) => current.priority < priority)) {
21
+ this.list.pushBack(item);
22
22
  }
23
- if (!added)
24
- this.items.push(item);
25
23
  }
26
24
  /**
27
- * Removes and returns the highest priority element from the queue,
28
- * or undefined if queue is empty.
25
+ * Removes and returns the highest priority element from the queue, or undefined if queue is empty.
29
26
  */
30
27
  pop() {
31
- const item = this.items.shift();
28
+ const item = this.list.popFront();
32
29
  return item?.element;
33
30
  }
34
31
  /**
35
- * Returns the highest priority element without removing it,
36
- * or undefined if queue is empty.
32
+ * Returns the highest priority element without removing it, or undefined if queue is empty.
37
33
  */
38
34
  front() {
39
- return this.items[0]?.element;
35
+ return this.list.front()?.element;
40
36
  }
41
37
  /**
42
38
  * Checks if the queue is empty. Returns true if empty, false otherwise.
43
39
  */
44
40
  isEmpty() {
45
- return this.items.length === 0;
41
+ return this.list.isEmpty();
46
42
  }
47
43
  /**
48
44
  * Returns the number of elements in the queue.
49
45
  */
50
46
  size() {
51
- return this.items.length;
47
+ return this.list.size();
52
48
  }
53
49
  /**
54
50
  * Removes all elements from the queue.
55
51
  */
56
52
  clear() {
57
- this.items = [];
53
+ this.list.clear();
58
54
  }
59
55
  }
60
56
  exports.PriorityQueue = PriorityQueue;
@@ -1 +1 @@
1
- {"version":3,"file":"priority-queue.js","sourceRoot":"","sources":["../../lib/priority-queue.ts"],"names":[],"mappings":";;;AAUA,MAAa,aAAa;IAChB,KAAK,CAAqC;IAElD;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,OAAU,EAAE,QAAgB;QAC/B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9B,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,OAAO,IAAI,EAAE,OAAO,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AA7DD,sCA6DC"}
1
+ {"version":3,"file":"priority-queue.js","sourceRoot":"","sources":["../../lib/priority-queue.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAa3C,MAAa,aAAa;IAChB,IAAI,CAA+C;IAE3D;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,wBAAU,EAAoC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,OAAU,EAAE,QAAgB;QAC/B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,EAAE,OAAO,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;CACF;AAzDD,sCAyDC"}
@@ -5,6 +5,7 @@ export interface RedBlackTree<K, V> {
5
5
  find(key: K): V | undefined;
6
6
  min(): V | undefined;
7
7
  max(): V | undefined;
8
+ forEach(callback: (key: K, value: V) => void): void;
8
9
  isEmpty(): boolean;
9
10
  size(): number;
10
11
  clear(): void;
@@ -24,4 +25,5 @@ export declare class RedBlackTree<K, V> implements RedBlackTree<K, V> {
24
25
  private transplant;
25
26
  private fixDelete;
26
27
  private isEqual;
28
+ private inorderTraversal;
27
29
  }
@@ -311,6 +311,16 @@ class RedBlackTree {
311
311
  // Two values are equal if neither is less than the other
312
312
  return !this.comparator(a, b) && !this.comparator(b, a);
313
313
  }
314
+ inorderTraversal(node, callback) {
315
+ if (node !== null) {
316
+ this.inorderTraversal(node.left, callback);
317
+ callback(node.key, node.value);
318
+ this.inorderTraversal(node.right, callback);
319
+ }
320
+ }
321
+ forEach(callback) {
322
+ this.inorderTraversal(this.root, callback);
323
+ }
314
324
  }
315
325
  exports.RedBlackTree = RedBlackTree;
316
326
  //# sourceMappingURL=red-black-tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"red-black-tree.js","sourceRoot":"","sources":["../../lib/red-black-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"red-black-tree.js","sourceRoot":"","sources":["../../lib/red-black-tree.ts"],"names":[],"mappings":"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"}
package/dist/lib/set.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import { Comparator } from '../types';
2
2
  export interface Set<T> {
3
3
  insert(element: T): void;
4
+ insertList(elements: T[]): void;
4
5
  remove(element: T): void;
5
6
  find(element: T): boolean;
7
+ forEach(callback: (element: T) => void): void;
6
8
  isEmpty(): boolean;
7
9
  size(): number;
8
10
  clear(): void;
package/dist/lib/set.js CHANGED
@@ -15,6 +15,14 @@ class Set {
15
15
  this.bst.insert(value);
16
16
  }
17
17
  }
18
+ /**
19
+ * Adds multiple values to the set if they're not already present
20
+ */
21
+ insertList(values) {
22
+ for (const value of values) {
23
+ this.insert(value);
24
+ }
25
+ }
18
26
  /**
19
27
  * Checks if a value exists in the set
20
28
  */
@@ -27,6 +35,12 @@ class Set {
27
35
  remove(value) {
28
36
  this.bst.remove(value);
29
37
  }
38
+ /**
39
+ * Executes a callback function for each element in the set
40
+ */
41
+ forEach(callback) {
42
+ this.bst.forEach(callback);
43
+ }
30
44
  /**
31
45
  * Removes all elements from the set
32
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../lib/set.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AAaxD,MAAa,GAAG;IACN,GAAG,CAAsB;IAEjC,YAAY,aAA4B,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;QAC3D,IAAI,CAAC,GAAG,GAAG,IAAI,qCAAgB,CAAI,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,qCAAgB,EAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAlDD,kBAkDC"}
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../lib/set.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AAexD,MAAa,GAAG;IACN,GAAG,CAAsB;IAEjC,YAAY,aAA4B,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC;QAC3D,IAAI,CAAC,GAAG,GAAG,IAAI,qCAAgB,CAAI,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAW;QACpB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAQ;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAQ;QACb,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAA8B;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,qCAAgB,EAAK,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAlED,kBAkEC"}
@@ -6,113 +6,158 @@ describe('BinarySearchTree', () => {
6
6
  beforeEach(() => {
7
7
  bst = new binary_search_tree_1.BinarySearchTree();
8
8
  });
9
- test('should create empty tree', () => {
10
- expect(bst.isEmpty()).toBe(true);
11
- expect(bst.count()).toBe(0);
9
+ describe('Basic Operations', () => {
10
+ test('should create empty tree', () => {
11
+ expect(bst.isEmpty()).toBe(true);
12
+ expect(bst.count()).toBe(0);
13
+ });
14
+ test('should insert and search values', () => {
15
+ bst.insert(5);
16
+ bst.insert(3);
17
+ bst.insert(7);
18
+ expect(bst.find(5)).toBe(true);
19
+ expect(bst.find(3)).toBe(true);
20
+ expect(bst.find(7)).toBe(true);
21
+ expect(bst.find(1)).toBe(false);
22
+ expect(bst.count()).toBe(3);
23
+ expect(bst.isEmpty()).toBe(false);
24
+ });
25
+ test('should clear all nodes from tree', () => {
26
+ bst.insert(5);
27
+ bst.insert(3);
28
+ bst.insert(7);
29
+ bst.clear();
30
+ expect(bst.isEmpty()).toBe(true);
31
+ expect(bst.find(5)).toBe(false);
32
+ expect(bst.min()).toBeUndefined();
33
+ expect(bst.max()).toBeUndefined();
34
+ expect(bst.count()).toBe(0);
35
+ });
12
36
  });
13
- test('should insert and search values', () => {
14
- bst.insert(5);
15
- bst.insert(3);
16
- bst.insert(7);
17
- expect(bst.find(5)).toBe(true);
18
- expect(bst.find(3)).toBe(true);
19
- expect(bst.find(7)).toBe(true);
20
- expect(bst.find(1)).toBe(false);
21
- expect(bst.count()).toBe(3);
22
- expect(bst.isEmpty()).toBe(false);
37
+ describe('Min/Max Operations', () => {
38
+ test('should find min and max values', () => {
39
+ bst.insert(5);
40
+ bst.insert(3);
41
+ bst.insert(7);
42
+ bst.insert(1);
43
+ bst.insert(9);
44
+ expect(bst.min()).toBe(1);
45
+ expect(bst.max()).toBe(9);
46
+ });
47
+ test('should return undefined min/max for empty tree', () => {
48
+ expect(bst.min()).toBeUndefined();
49
+ expect(bst.max()).toBeUndefined();
50
+ });
23
51
  });
24
- test('should find min and max values', () => {
25
- bst.insert(5);
26
- bst.insert(3);
27
- bst.insert(7);
28
- bst.insert(1);
29
- bst.insert(9);
30
- expect(bst.min()).toBe(1);
31
- expect(bst.max()).toBe(9);
52
+ describe('Remove Operations', () => {
53
+ test('should remove leaf nodes', () => {
54
+ bst.insert(5);
55
+ bst.insert(3);
56
+ bst.insert(7);
57
+ bst.remove(3);
58
+ expect(bst.find(3)).toBe(false);
59
+ expect(bst.find(5)).toBe(true);
60
+ expect(bst.find(7)).toBe(true);
61
+ expect(bst.count()).toBe(2);
62
+ });
63
+ test('should remove nodes with one child', () => {
64
+ bst.insert(5);
65
+ bst.insert(3);
66
+ bst.insert(2);
67
+ bst.remove(3);
68
+ expect(bst.find(3)).toBe(false);
69
+ expect(bst.find(5)).toBe(true);
70
+ expect(bst.find(2)).toBe(true);
71
+ expect(bst.count()).toBe(2);
72
+ });
73
+ test('should remove nodes with two children', () => {
74
+ bst.insert(5);
75
+ bst.insert(3);
76
+ bst.insert(7);
77
+ bst.insert(6);
78
+ bst.insert(8);
79
+ bst.remove(7);
80
+ expect(bst.find(7)).toBe(false);
81
+ expect(bst.find(5)).toBe(true);
82
+ expect(bst.find(8)).toBe(true);
83
+ expect(bst.find(6)).toBe(true);
84
+ expect(bst.count()).toBe(4);
85
+ });
86
+ test('should handle removing root node', () => {
87
+ bst.insert(5);
88
+ bst.insert(3);
89
+ bst.insert(7);
90
+ bst.remove(5);
91
+ expect(bst.find(5)).toBe(false);
92
+ expect(bst.find(3)).toBe(true);
93
+ expect(bst.find(7)).toBe(true);
94
+ expect(bst.count()).toBe(2);
95
+ });
96
+ test('should handle removing non-existent values', () => {
97
+ bst.insert(5);
98
+ bst.insert(3);
99
+ bst.remove(7);
100
+ expect(bst.count()).toBe(2);
101
+ expect(bst.find(5)).toBe(true);
102
+ expect(bst.find(3)).toBe(true);
103
+ });
32
104
  });
33
- test('should return undefined min/max for empty tree', () => {
34
- expect(bst.min()).toBeUndefined();
35
- expect(bst.max()).toBeUndefined();
105
+ describe('Special Cases', () => {
106
+ test('should maintain order with duplicate values', () => {
107
+ const bst = new binary_search_tree_1.BinarySearchTree();
108
+ bst.insert(5);
109
+ bst.insert(5);
110
+ bst.insert(5);
111
+ expect(bst.count()).toBe(3);
112
+ bst.remove(5);
113
+ expect(bst.count()).toBe(2);
114
+ expect(bst.find(5)).toBe(true);
115
+ });
116
+ test('should work with custom comparator', () => {
117
+ const reverseBst = new binary_search_tree_1.BinarySearchTree((a, b) => a > b);
118
+ reverseBst.insert(5);
119
+ reverseBst.insert(3);
120
+ reverseBst.insert(7);
121
+ expect(reverseBst.min()).toBe(7);
122
+ expect(reverseBst.max()).toBe(3);
123
+ });
36
124
  });
37
- test('should remove leaf nodes', () => {
38
- bst.insert(5);
39
- bst.insert(3);
40
- bst.insert(7);
41
- bst.remove(3);
42
- expect(bst.find(3)).toBe(false);
43
- expect(bst.find(5)).toBe(true);
44
- expect(bst.find(7)).toBe(true);
45
- expect(bst.count()).toBe(2);
46
- });
47
- test('should remove nodes with one child', () => {
48
- bst.insert(5);
49
- bst.insert(3);
50
- bst.insert(2);
51
- bst.remove(3);
52
- expect(bst.find(3)).toBe(false);
53
- expect(bst.find(5)).toBe(true);
54
- expect(bst.find(2)).toBe(true);
55
- expect(bst.count()).toBe(2);
56
- });
57
- test('should remove nodes with two children', () => {
58
- bst.insert(5);
59
- bst.insert(3);
60
- bst.insert(7);
61
- bst.insert(6);
62
- bst.insert(8);
63
- bst.remove(7);
64
- expect(bst.find(7)).toBe(false);
65
- expect(bst.find(5)).toBe(true);
66
- expect(bst.find(8)).toBe(true);
67
- expect(bst.find(6)).toBe(true);
68
- expect(bst.count()).toBe(4);
69
- });
70
- test('should clear all nodes from tree', () => {
71
- bst.insert(5);
72
- bst.insert(3);
73
- bst.insert(7);
74
- bst.clear();
75
- expect(bst.isEmpty()).toBe(true);
76
- expect(bst.find(5)).toBe(false);
77
- expect(bst.min()).toBeUndefined();
78
- expect(bst.max()).toBeUndefined();
79
- expect(bst.count()).toBe(0);
80
- });
81
- test('should handle removing root node', () => {
82
- bst.insert(5);
83
- bst.insert(3);
84
- bst.insert(7);
85
- bst.remove(5);
86
- expect(bst.find(5)).toBe(false);
87
- expect(bst.find(3)).toBe(true);
88
- expect(bst.find(7)).toBe(true);
89
- expect(bst.count()).toBe(2);
90
- });
91
- test('should handle removing non-existent values', () => {
92
- bst.insert(5);
93
- bst.insert(3);
94
- bst.remove(7);
95
- expect(bst.count()).toBe(2);
96
- expect(bst.find(5)).toBe(true);
97
- expect(bst.find(3)).toBe(true);
98
- });
99
- test('should maintain order with duplicate values', () => {
100
- const bst = new binary_search_tree_1.BinarySearchTree();
101
- bst.insert(5);
102
- bst.insert(5);
103
- bst.insert(5);
104
- expect(bst.count()).toBe(3);
105
- bst.remove(5);
106
- expect(bst.count()).toBe(2);
107
- expect(bst.find(5)).toBe(true);
108
- });
109
- test('should work with custom comparator', () => {
110
- const reverseBst = new binary_search_tree_1.BinarySearchTree((a, b) => a > b);
111
- reverseBst.insert(5);
112
- reverseBst.insert(3);
113
- reverseBst.insert(7);
114
- expect(reverseBst.min()).toBe(7);
115
- expect(reverseBst.max()).toBe(3);
125
+ describe('Traversal Operations', () => {
126
+ test('should traverse tree in-order', () => {
127
+ bst.insert(5);
128
+ bst.insert(3);
129
+ bst.insert(7);
130
+ bst.insert(1);
131
+ bst.insert(9);
132
+ const result = [];
133
+ bst.forEach((value) => result.push(value));
134
+ expect(result).toEqual([1, 3, 5, 7, 9]);
135
+ });
136
+ test('should traverse tree pre-order', () => {
137
+ bst.insert(5);
138
+ bst.insert(3);
139
+ bst.insert(7);
140
+ bst.insert(1);
141
+ bst.insert(9);
142
+ const result = [];
143
+ bst.forEach((value) => result.push(value), 'preorder');
144
+ expect(result).toEqual([5, 3, 1, 7, 9]);
145
+ });
146
+ test('should traverse tree post-order', () => {
147
+ bst.insert(5);
148
+ bst.insert(3);
149
+ bst.insert(7);
150
+ bst.insert(1);
151
+ bst.insert(9);
152
+ const result = [];
153
+ bst.forEach((value) => result.push(value), 'postorder');
154
+ expect(result).toEqual([1, 3, 9, 7, 5]);
155
+ });
156
+ test('should handle forEach on empty tree', () => {
157
+ const result = [];
158
+ bst.forEach((value) => result.push(value));
159
+ expect(result).toEqual([]);
160
+ });
116
161
  });
117
162
  });
118
163
  //# sourceMappingURL=binary-search-tree.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary-search-tree.test.js","sourceRoot":"","sources":["../../tests/binary-search-tree.test.ts"],"names":[],"mappings":";;AAAA,kEAA6D;AAE7D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,GAA6B,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACd,GAAG,GAAG,IAAI,qCAAgB,EAAU,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACtD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,MAAM,GAAG,GAAG,IAAI,qCAAgB,EAAU,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,UAAU,GAAG,IAAI,qCAAgB,CAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"binary-search-tree.test.js","sourceRoot":"","sources":["../../tests/binary-search-tree.test.ts"],"names":[],"mappings":"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"}