data-structure-typed 1.53.7 → 1.53.8

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 (113) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/cjs/common/index.js +5 -0
  3. package/dist/cjs/common/index.js.map +1 -1
  4. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  5. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +2 -2
  6. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
  8. package/dist/cjs/data-structures/binary-tree/binary-tree.js +2 -2
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/bst.d.ts +53 -23
  11. package/dist/cjs/data-structures/binary-tree/bst.js +59 -25
  12. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/index.d.ts +1 -1
  14. package/dist/cjs/data-structures/binary-tree/index.js +1 -1
  15. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/{rb-tree.d.ts → red-black-tree.d.ts} +52 -0
  17. package/dist/cjs/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +54 -2
  18. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -0
  19. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  20. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +5 -5
  21. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  22. package/dist/cjs/data-structures/hash/hash-map.d.ts +30 -0
  23. package/dist/cjs/data-structures/hash/hash-map.js +30 -0
  24. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  25. package/dist/cjs/data-structures/heap/heap.d.ts +20 -3
  26. package/dist/cjs/data-structures/heap/heap.js +31 -11
  27. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  28. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +36 -1
  29. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +56 -9
  30. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  31. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +34 -1
  32. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +54 -10
  33. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  34. package/dist/cjs/data-structures/queue/deque.d.ts +37 -8
  35. package/dist/cjs/data-structures/queue/deque.js +73 -29
  36. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  37. package/dist/cjs/data-structures/queue/queue.d.ts +41 -1
  38. package/dist/cjs/data-structures/queue/queue.js +51 -9
  39. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  40. package/dist/cjs/data-structures/stack/stack.d.ts +27 -10
  41. package/dist/cjs/data-structures/stack/stack.js +39 -20
  42. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  43. package/dist/cjs/data-structures/trie/trie.d.ts +12 -13
  44. package/dist/cjs/data-structures/trie/trie.js +12 -13
  45. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  46. package/dist/mjs/common/index.js +5 -0
  47. package/dist/mjs/common/index.js.map +1 -1
  48. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
  49. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +2 -2
  50. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  51. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +1 -1
  52. package/dist/mjs/data-structures/binary-tree/binary-tree.js +2 -2
  53. package/dist/mjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  54. package/dist/mjs/data-structures/binary-tree/bst.d.ts +53 -23
  55. package/dist/mjs/data-structures/binary-tree/bst.js +59 -25
  56. package/dist/mjs/data-structures/binary-tree/bst.js.map +1 -1
  57. package/dist/mjs/data-structures/binary-tree/index.d.ts +1 -1
  58. package/dist/mjs/data-structures/binary-tree/index.js +1 -1
  59. package/dist/mjs/data-structures/binary-tree/index.js.map +1 -1
  60. package/dist/mjs/data-structures/binary-tree/{rb-tree.d.ts → red-black-tree.d.ts} +52 -0
  61. package/dist/mjs/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +54 -2
  62. package/dist/mjs/data-structures/binary-tree/red-black-tree.js.map +1 -0
  63. package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  64. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +3 -3
  65. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  66. package/dist/mjs/data-structures/hash/hash-map.d.ts +30 -0
  67. package/dist/mjs/data-structures/hash/hash-map.js +30 -0
  68. package/dist/mjs/data-structures/hash/hash-map.js.map +1 -1
  69. package/dist/mjs/data-structures/heap/heap.d.ts +20 -3
  70. package/dist/mjs/data-structures/heap/heap.js +31 -11
  71. package/dist/mjs/data-structures/heap/heap.js.map +1 -1
  72. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +36 -1
  73. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +56 -9
  74. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  75. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +34 -1
  76. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +54 -10
  77. package/dist/mjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  78. package/dist/mjs/data-structures/queue/deque.d.ts +37 -8
  79. package/dist/mjs/data-structures/queue/deque.js +73 -29
  80. package/dist/mjs/data-structures/queue/deque.js.map +1 -1
  81. package/dist/mjs/data-structures/queue/queue.d.ts +41 -1
  82. package/dist/mjs/data-structures/queue/queue.js +51 -9
  83. package/dist/mjs/data-structures/queue/queue.js.map +1 -1
  84. package/dist/mjs/data-structures/stack/stack.d.ts +27 -10
  85. package/dist/mjs/data-structures/stack/stack.js +39 -20
  86. package/dist/mjs/data-structures/stack/stack.js.map +1 -1
  87. package/dist/mjs/data-structures/trie/trie.d.ts +12 -13
  88. package/dist/mjs/data-structures/trie/trie.js +12 -13
  89. package/dist/mjs/data-structures/trie/trie.js.map +1 -1
  90. package/dist/umd/data-structure-typed.js +373 -91
  91. package/dist/umd/data-structure-typed.min.js +2 -2
  92. package/dist/umd/data-structure-typed.min.js.map +1 -1
  93. package/package.json +6 -6
  94. package/src/common/index.ts +7 -1
  95. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +2 -2
  96. package/src/data-structures/binary-tree/binary-tree.ts +2 -2
  97. package/src/data-structures/binary-tree/bst.ts +64 -25
  98. package/src/data-structures/binary-tree/index.ts +1 -1
  99. package/src/data-structures/binary-tree/{rb-tree.ts → red-black-tree.ts} +50 -1
  100. package/src/data-structures/binary-tree/tree-multi-map.ts +3 -3
  101. package/src/data-structures/hash/hash-map.ts +30 -0
  102. package/src/data-structures/heap/heap.ts +33 -10
  103. package/src/data-structures/linked-list/doubly-linked-list.ts +62 -8
  104. package/src/data-structures/linked-list/singly-linked-list.ts +60 -10
  105. package/src/data-structures/queue/deque.ts +72 -28
  106. package/src/data-structures/queue/queue.ts +50 -7
  107. package/src/data-structures/stack/stack.ts +39 -20
  108. package/src/data-structures/trie/trie.ts +8 -3
  109. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +35 -35
  110. package/test/unit/data-structures/binary-tree/bst.test.ts +79 -85
  111. package/test/unit/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +39 -84
  112. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +0 -1
  113. package/dist/mjs/data-structures/binary-tree/rb-tree.js.map +0 -1
@@ -58,7 +58,7 @@ describe('BST operations test', () => {
58
58
  [10, 10],
59
59
  [5, 5]
60
60
  ];
61
- bst.addMany(idsAndValues, undefined, false);
61
+ bst.addMany(idsAndValues, [], false);
62
62
  expect(bst.root).toBeInstanceOf(BSTNode);
63
63
 
64
64
  if (bst.root) expect(bst.root.key).toBe(11);
@@ -450,26 +450,26 @@ describe('BST operations test', () => {
450
450
  expect(bfsNodes[2].key).toBe(16);
451
451
  });
452
452
 
453
- it('should keyValueNodeEntryRawToNodeAndValue', () => {
454
- const bst = new BST<number>();
455
- const node0 = bst.keyValueNodeEntryRawToNodeAndValue(0);
456
- expect(node0).toEqual([
457
- {
458
- _left: undefined,
459
- _right: undefined,
460
- key: 0,
461
- parent: undefined,
462
- value: undefined
463
- },
464
- undefined
465
- ]);
466
-
467
- const nodeUndefined = bst.keyValueNodeEntryRawToNodeAndValue(undefined);
468
- expect(nodeUndefined).toEqual([undefined, undefined]);
469
-
470
- const nodeNull = bst.keyValueNodeEntryRawToNodeAndValue(null);
471
- expect(nodeNull).toEqual([undefined, undefined]);
472
- });
453
+ // it('should keyValueNodeEntryRawToNodeAndValue', () => {
454
+ // const bst = new BST<number>();
455
+ // const node0 = bst.keyValueNodeEntryRawToNodeAndValue(0);
456
+ // expect(node0).toEqual([
457
+ // {
458
+ // _left: undefined,
459
+ // _right: undefined,
460
+ // key: 0,
461
+ // parent: undefined,
462
+ // value: undefined
463
+ // },
464
+ // undefined
465
+ // ]);
466
+ //
467
+ // const nodeUndefined = bst.keyValueNodeEntryRawToNodeAndValue(undefined);
468
+ // expect(nodeUndefined).toEqual([undefined, undefined]);
469
+ //
470
+ // const nodeNull = bst.keyValueNodeEntryRawToNodeAndValue(null);
471
+ // expect(nodeNull).toEqual([undefined, undefined]);
472
+ // });
473
473
 
474
474
  it('should replace value', () => {
475
475
  const tree = new BST<number, string>([4, 5, [1, '1'], 2, 3], { isMapMode: false });
@@ -489,6 +489,13 @@ describe('BST operations test', () => {
489
489
  expect(treeMap.getNode(1)?.value).toBe(undefined);
490
490
  expect(treeMap.get(1)).toBe('b');
491
491
  });
492
+
493
+ it('should search in range', () => {
494
+ const bst = new BST<number>([10, 5, 15, 3, 7, 12, 18]);
495
+ expect(bst.rangeSearch([4, 12])).toEqual([10, 12, 5, 7]);
496
+ expect(() => bst.rangeSearch([12, 4])).toThrow('low must be less than or equal to high');
497
+ expect(bst.rangeSearch([12, 12])).toEqual([12]);
498
+ });
492
499
  });
493
500
 
494
501
  describe('BST operations test recursively', () => {
@@ -1340,26 +1347,26 @@ describe('BST operations not map mode test', () => {
1340
1347
  });
1341
1348
  });
1342
1349
 
1343
- it('should keyValueNodeEntryRawToNodeAndValue', () => {
1344
- const bst = new BST<number>([], { isMapMode: false });
1345
- const node0 = bst.keyValueNodeEntryRawToNodeAndValue(0);
1346
- expect(node0).toEqual([
1347
- {
1348
- _left: undefined,
1349
- _right: undefined,
1350
- key: 0,
1351
- parent: undefined,
1352
- value: undefined
1353
- },
1354
- undefined
1355
- ]);
1356
-
1357
- const nodeUndefined = bst.keyValueNodeEntryRawToNodeAndValue(undefined);
1358
- expect(nodeUndefined).toEqual([undefined, undefined]);
1359
-
1360
- const nodeNull = bst.keyValueNodeEntryRawToNodeAndValue(null);
1361
- expect(nodeNull).toEqual([undefined, undefined]);
1362
- });
1350
+ // it('should keyValueNodeEntryRawToNodeAndValue', () => {
1351
+ // const bst = new BST<number>([], { isMapMode: false });
1352
+ // const node0 = bst.keyValueNodeEntryRawToNodeAndValue(0);
1353
+ // expect(node0).toEqual([
1354
+ // {
1355
+ // _left: undefined,
1356
+ // _right: undefined,
1357
+ // key: 0,
1358
+ // parent: undefined,
1359
+ // value: undefined
1360
+ // },
1361
+ // undefined
1362
+ // ]);
1363
+ //
1364
+ // const nodeUndefined = bst.keyValueNodeEntryRawToNodeAndValue(undefined);
1365
+ // expect(nodeUndefined).toEqual([undefined, undefined]);
1366
+ //
1367
+ // const nodeNull = bst.keyValueNodeEntryRawToNodeAndValue(null);
1368
+ // expect(nodeNull).toEqual([undefined, undefined]);
1369
+ // });
1363
1370
  });
1364
1371
 
1365
1372
  describe('BST operations not map mode test recursively', () => {
@@ -1531,57 +1538,52 @@ describe('BST iterative methods not map mode test', () => {
1531
1538
  });
1532
1539
 
1533
1540
  describe('classic use', () => {
1534
- // Test case for finding the kth smallest element
1535
- it('@example Find kth smallest element', () => {
1536
- // Create a BST with some elements
1537
- const bst = new BST<number>([5, 3, 7, 1, 4, 6, 8]);
1538
- const sortedKeys = bst.dfs(node => node.key, 'IN');
1539
-
1540
- // Helper function to find kth smallest
1541
- const findKthSmallest = (k: number): number | undefined => {
1542
- return sortedKeys[k - 1];
1543
- };
1541
+ it('@example Merge 3 sorted datasets', () => {
1542
+ const dataset1 = new BST<number, string>([
1543
+ [1, 'A'],
1544
+ [7, 'G']
1545
+ ]);
1546
+ const dataset2 = [
1547
+ [2, 'B'],
1548
+ [6, 'F']
1549
+ ];
1550
+ const dataset3 = new BST<number, string>([
1551
+ [3, 'C'],
1552
+ [5, 'E'],
1553
+ [4, 'D']
1554
+ ]);
1544
1555
 
1545
- // Assertions
1546
- expect(findKthSmallest(1)).toBe(1);
1547
- expect(findKthSmallest(3)).toBe(4);
1548
- expect(findKthSmallest(7)).toBe(8);
1556
+ // Merge datasets into a single BinarySearchTree
1557
+ const merged = new BST<number, string>(dataset1);
1558
+ merged.addMany(dataset2);
1559
+ merged.merge(dataset3);
1560
+
1561
+ // Verify merged dataset is in sorted order
1562
+ expect([...merged.values()]).toEqual(['A', 'B', 'C', 'D', 'E', 'F', 'G']);
1549
1563
  });
1550
1564
 
1551
1565
  // Test case for finding elements in a given range
1552
1566
  it('@example Find elements in a range', () => {
1553
1567
  const bst = new BST<number>([10, 5, 15, 3, 7, 12, 18]);
1554
1568
  expect(bst.search(new Range(5, 10))).toEqual([10, 5, 7]);
1555
- expect(bst.search(new Range(4, 12))).toEqual([10, 12, 5, 7]);
1569
+ expect(bst.rangeSearch([4, 12], node => node.key.toString())).toEqual(['10', '12', '5', '7']);
1556
1570
  expect(bst.search(new Range(4, 12, true, false))).toEqual([10, 5, 7]);
1557
- expect(bst.search(new Range(15, 20))).toEqual([15, 18]);
1571
+ expect(bst.rangeSearch([15, 20])).toEqual([15, 18]);
1558
1572
  expect(bst.search(new Range(15, 20, false))).toEqual([18]);
1559
1573
  });
1560
1574
 
1561
- // Test case for Huffman coding simulation
1562
- it('Huffman coding frequency simulation', () => {
1563
- // Create a BST to simulate Huffman tree
1564
- const frequencyBST = new BST<string, number>([
1565
- ['a', 5],
1566
- ['b', 9],
1567
- ['c', 12],
1568
- ['d', 13],
1569
- ['e', 16],
1570
- ['f', 45]
1571
- ]);
1572
-
1573
- // Sort nodes by frequency
1574
- const sortedFrequencies = frequencyBST.dfs(node => ({ char: node.key, freq: node.value }), 'IN');
1575
-
1576
- // Build Huffman tree simulation
1577
- expect(sortedFrequencies[0].char).toBe('a');
1578
- expect(sortedFrequencies[5].char).toBe('f');
1579
- });
1580
-
1581
1575
  // Test case for Lowest Common Ancestor (LCA)
1582
1576
  it('@example Find lowest common ancestor', () => {
1583
1577
  const bst = new BST<number>([20, 10, 30, 5, 15, 25, 35, 3, 7, 12, 18]);
1584
1578
 
1579
+ // LCA helper function
1580
+ const findLCA = (num1: number, num2: number): number | undefined => {
1581
+ const path1 = bst.getPathToRoot(num1);
1582
+ const path2 = bst.getPathToRoot(num2);
1583
+ // Find the first common ancestor
1584
+ return findFirstCommon(path1, path2);
1585
+ };
1586
+
1585
1587
  function findFirstCommon(arr1: number[], arr2: number[]): number | undefined {
1586
1588
  for (const num of arr1) {
1587
1589
  if (arr2.indexOf(num) !== -1) {
@@ -1591,14 +1593,6 @@ describe('classic use', () => {
1591
1593
  return undefined;
1592
1594
  }
1593
1595
 
1594
- // LCA helper function
1595
- const findLCA = (num1: number, num2: number): number | undefined => {
1596
- const path1 = bst.getPathToRoot(num1);
1597
- const path2 = bst.getPathToRoot(num2);
1598
- // Find the first common ancestor
1599
- return findFirstCommon(path1, path2);
1600
- };
1601
-
1602
1596
  // Assertions
1603
1597
  expect(findLCA(3, 10)).toBe(7);
1604
1598
  expect(findLCA(5, 35)).toBe(15);
@@ -821,100 +821,55 @@ describe('RedBlackTree - _deleteFixup', () => {
821
821
  });
822
822
 
823
823
  describe('classic use', () => {
824
- it('Database Index: Add, Search, and Delete Records', () => {
825
- const dbIndex = new RedBlackTree<number, string>();
826
-
827
- // Insert records
828
- dbIndex.add(1, 'Alice');
829
- dbIndex.add(2, 'Bob');
830
- dbIndex.add(3, 'Charlie');
831
-
832
- // Search for records
833
- expect(dbIndex.get(1)).toBe('Alice');
834
- expect(dbIndex.get(2)).toBe('Bob');
835
- expect(dbIndex.get(3)).toBe('Charlie');
836
-
837
- // Delete a record
838
- dbIndex.delete(2);
839
- expect(dbIndex.get(2)).toBeUndefined();
840
- });
841
-
842
- it('@example Merge 3 sorted datasets', () => {
843
- const dataset1 = new RedBlackTree<number, string>([
844
- [1, 'A'],
845
- [7, 'G']
846
- ]);
847
- const dataset2 = [
848
- [2, 'B'],
849
- [6, 'F']
850
- ];
851
- const dataset3 = new RedBlackTree<number, string>([
852
- [3, 'C'],
853
- [5, 'E'],
854
- [4, 'D']
855
- ]);
856
-
857
- // Merge datasets into a single Red-Black Tree
858
- const merged = new RedBlackTree<number, string>(dataset1);
859
- merged.addMany(dataset2);
860
- merged.merge(dataset3);
861
-
862
- // Verify merged dataset is in sorted order
863
- expect([...merged.values()]).toEqual(['A', 'B', 'C', 'D', 'E', 'F', 'G']);
864
- });
865
-
866
824
  // Test case for finding elements in a given range
867
- it('Find elements in a range', () => {
825
+ it('@example Find elements in a range', () => {
868
826
  const bst = new RedBlackTree<number>([10, 5, 15, 3, 7, 12, 18]);
869
827
  expect(bst.search(new Range(5, 10))).toEqual([5, 10, 7]);
870
828
  expect(bst.search(new Range(4, 12))).toEqual([5, 10, 12, 7]);
871
829
  expect(bst.search(new Range(15, 20))).toEqual([15, 18]);
872
830
  });
873
831
 
874
- it('Timer List: Manage Timed Tasks', () => {
875
- const timerList = new RedBlackTree<number, string>(); // Key: Time in ms, Value: Task Name
876
-
877
- // Schedule tasks
878
- timerList.add(100, 'Task A');
879
- timerList.add(200, 'Task B');
880
- timerList.add(50, 'Task C');
881
-
882
- // Verify the order of tasks by retrieval
883
- expect([...timerList.values()]).toEqual(['Task C', 'Task A', 'Task B']); // Sorted by key (time)
884
-
885
- // Remove the earliest task
886
- timerList.delete(50);
887
- expect([...timerList.values()]).toEqual(['Task A', 'Task B']);
888
- });
889
-
890
- it('Scheduler: Manage Tasks by Priority', () => {
891
- const scheduler = new RedBlackTree<number, string>(); // Key: Priority, Value: Task Name
892
-
893
- // Add tasks with different priorities
894
- scheduler.add(3, 'Low Priority Task');
895
- scheduler.add(1, 'High Priority Task');
896
- scheduler.add(2, 'Medium Priority Task');
897
-
898
- // Verify the order of tasks by retrieval
899
- expect([...scheduler.values()]).toEqual(['High Priority Task', 'Medium Priority Task', 'Low Priority Task']);
900
-
901
- // Remove the highest priority task
902
- scheduler.delete(1);
903
- expect([...scheduler.values()]).toEqual(['Medium Priority Task', 'Low Priority Task']);
904
- });
832
+ it('@example using Red-Black Tree as a price-based index for stock data', () => {
833
+ // Define the structure of individual stock records
834
+ interface StockRecord {
835
+ price: number; // Stock price (key for indexing)
836
+ symbol: string; // Stock ticker symbol
837
+ volume: number; // Trade volume
838
+ }
905
839
 
906
- it('Routing Table: Manage IP Routes', () => {
907
- const routingTable = new RedBlackTree<number, string>(); // Key: IP Address, Value: Route
840
+ // Simulate stock market data as it might come from an external feed
841
+ const marketStockData: StockRecord[] = [
842
+ { price: 142.5, symbol: 'AAPL', volume: 1000000 },
843
+ { price: 335.2, symbol: 'MSFT', volume: 800000 },
844
+ { price: 3285.04, symbol: 'AMZN', volume: 500000 },
845
+ { price: 267.98, symbol: 'META', volume: 750000 },
846
+ { price: 234.57, symbol: 'GOOGL', volume: 900000 }
847
+ ];
908
848
 
909
- // Add routes
910
- routingTable.add(1921680101, 'Route A');
911
- routingTable.add(1921680102, 'Route B');
912
- routingTable.add(1921680100, 'Route C');
849
+ // Extend the stock record type to include metadata for database usage
850
+ type StockTableRecord = StockRecord & { lastUpdated: Date };
851
+
852
+ // Create a Red-Black Tree to index stock records by price
853
+ // Simulates a database index with stock price as the key for quick lookups
854
+ const priceIndex = new RedBlackTree<number, StockTableRecord, StockRecord>(marketStockData, {
855
+ toEntryFn: stockRecord => [
856
+ stockRecord.price, // Use stock price as the key
857
+ {
858
+ ...stockRecord,
859
+ lastUpdated: new Date() // Add a timestamp for when the record was indexed
860
+ }
861
+ ]
862
+ });
913
863
 
914
- // Search for a specific route
915
- expect(routingTable.get(1921680101)).toBe('Route A');
864
+ // Query the stock with the highest price
865
+ const highestPricedStock = priceIndex.getRightMost();
866
+ expect(priceIndex.get(highestPricedStock)?.symbol).toBe('AMZN'); // Amazon has the highest price
916
867
 
917
- // Verify all routes in sorted order
918
- expect([...routingTable.values()]).toEqual(['Route C', 'Route A', 'Route B']);
868
+ // Query stocks within a specific price range (200 to 400)
869
+ const stocksInRange = priceIndex.rangeSearch(
870
+ [200, 400], // Price range
871
+ node => priceIndex.get(node)?.symbol // Extract stock symbols for the result
872
+ );
873
+ expect(stocksInRange).toEqual(['GOOGL', 'MSFT', 'META']); // Verify stocks in the range
919
874
  });
920
875
  });
@@ -1 +0,0 @@
1
- {"version":3,"file":"rb-tree.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/rb-tree.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rb-tree.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/rb-tree.ts"],"names":[],"mappings":"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"}