data-structure-typed 1.41.0 → 1.41.1

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 (76) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  3. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
  4. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +6 -3
  5. package/dist/cjs/data-structures/binary-tree/binary-tree.js +30 -8
  6. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/bst.d.ts +1 -1
  8. package/dist/cjs/data-structures/binary-tree/bst.js +2 -2
  9. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +5 -4
  11. package/dist/cjs/data-structures/binary-tree/rb-tree.js +42 -44
  12. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/tree-multiset.js +2 -2
  14. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -1
  15. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  16. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  17. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  18. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  19. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -1
  20. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -1
  21. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  22. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  23. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  24. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  25. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  26. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  27. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -1
  28. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  29. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  30. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  31. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  32. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  33. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +6 -3
  34. package/dist/mjs/data-structures/binary-tree/binary-tree.js +29 -8
  35. package/dist/mjs/data-structures/binary-tree/bst.d.ts +1 -1
  36. package/dist/mjs/data-structures/binary-tree/bst.js +2 -2
  37. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +5 -4
  38. package/dist/mjs/data-structures/binary-tree/rb-tree.js +43 -45
  39. package/dist/mjs/data-structures/binary-tree/tree-multiset.js +2 -2
  40. package/dist/umd/data-structure-typed.min.js +1 -1
  41. package/dist/umd/data-structure-typed.min.js.map +1 -1
  42. package/package.json +9 -9
  43. package/src/data-structures/binary-tree/avl-tree.ts +3 -2
  44. package/src/data-structures/binary-tree/binary-indexed-tree.ts +1 -1
  45. package/src/data-structures/binary-tree/binary-tree.ts +65 -17
  46. package/src/data-structures/binary-tree/bst.ts +7 -4
  47. package/src/data-structures/binary-tree/rb-tree.ts +47 -68
  48. package/src/data-structures/binary-tree/tree-multiset.ts +4 -3
  49. package/src/data-structures/graph/abstract-graph.ts +11 -12
  50. package/src/data-structures/graph/directed-graph.ts +7 -6
  51. package/src/data-structures/graph/undirected-graph.ts +7 -6
  52. package/src/data-structures/hash/hash-map.ts +1 -1
  53. package/src/data-structures/hash/tree-map.ts +1 -2
  54. package/src/data-structures/hash/tree-set.ts +1 -2
  55. package/src/data-structures/heap/heap.ts +2 -2
  56. package/src/data-structures/heap/max-heap.ts +1 -1
  57. package/src/data-structures/heap/min-heap.ts +1 -1
  58. package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
  59. package/src/data-structures/linked-list/singly-linked-list.ts +1 -1
  60. package/src/data-structures/matrix/matrix.ts +1 -1
  61. package/src/data-structures/matrix/vector2d.ts +1 -2
  62. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -1
  63. package/src/data-structures/priority-queue/min-priority-queue.ts +1 -1
  64. package/src/data-structures/priority-queue/priority-queue.ts +1 -1
  65. package/src/data-structures/queue/deque.ts +3 -4
  66. package/src/data-structures/queue/queue.ts +1 -1
  67. package/src/types/data-structures/matrix/navigator.ts +1 -1
  68. package/src/types/utils/utils.ts +1 -1
  69. package/src/types/utils/validate-type.ts +2 -2
  70. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +6 -6
  71. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +11 -11
  72. package/test/unit/data-structures/binary-tree/bst.test.ts +22 -20
  73. package/test/unit/data-structures/binary-tree/overall.test.ts +2 -2
  74. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +53 -17
  75. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +8 -8
  76. package/test/utils/big-o.js +10 -0
@@ -26,7 +26,6 @@ export abstract class AbstractVertex<V = any> {
26
26
  this.key = key;
27
27
  this.value = value;
28
28
  }
29
-
30
29
  }
31
30
 
32
31
  export abstract class AbstractEdge<E = any> {
@@ -65,7 +64,8 @@ export abstract class AbstractGraph<
65
64
  E = any,
66
65
  VO extends AbstractVertex<V> = AbstractVertex<V>,
67
66
  EO extends AbstractEdge<E> = AbstractEdge<E>
68
- > implements IGraph<V, E, VO, EO> {
67
+ > implements IGraph<V, E, VO, EO>
68
+ {
69
69
  protected _vertices: Map<VertexKey, VO> = new Map<VertexKey, VO>();
70
70
 
71
71
  get vertices(): Map<VertexKey, VO> {
@@ -513,14 +513,14 @@ export abstract class AbstractGraph<
513
513
  }
514
514
 
515
515
  getMinDist &&
516
- distMap.forEach((d, v) => {
517
- if (v !== srcVertex) {
518
- if (d < minDist) {
519
- minDist = d;
520
- if (genPaths) minDest = v;
516
+ distMap.forEach((d, v) => {
517
+ if (v !== srcVertex) {
518
+ if (d < minDist) {
519
+ minDist = d;
520
+ if (genPaths) minDest = v;
521
+ }
521
522
  }
522
- }
523
- });
523
+ });
524
524
 
525
525
  genPaths && getPaths(minDest);
526
526
 
@@ -582,7 +582,7 @@ export abstract class AbstractGraph<
582
582
  if (vertexOrKey instanceof AbstractVertex) distMap.set(vertexOrKey, Infinity);
583
583
  }
584
584
 
585
- const heap = new PriorityQueue<{ key: number; value: VO }>({comparator: (a, b) => a.key - b.key});
585
+ const heap = new PriorityQueue<{key: number; value: VO}>({comparator: (a, b) => a.key - b.key});
586
586
  heap.add({key: 0, value: srcVertex});
587
587
 
588
588
  distMap.set(srcVertex, 0);
@@ -811,7 +811,7 @@ export abstract class AbstractGraph<
811
811
  * `predecessor` property is a 2D array of vertices (or `null`) representing the predecessor vertices in the shortest
812
812
  * path between vertices in the
813
813
  */
814
- floyd(): { costs: number[][]; predecessor: (VO | null)[][] } {
814
+ floyd(): {costs: number[][]; predecessor: (VO | null)[][]} {
815
815
  const idAndVertices = [...this._vertices];
816
816
  const n = idAndVertices.length;
817
817
 
@@ -996,5 +996,4 @@ export abstract class AbstractGraph<
996
996
  protected _getVertexKey(vertexOrKey: VO | VertexKey): VertexKey {
997
997
  return vertexOrKey instanceof AbstractVertex ? vertexOrKey.key : vertexOrKey;
998
998
  }
999
-
1000
999
  }
@@ -46,13 +46,14 @@ export class DirectedEdge<E = any> extends AbstractEdge<E> {
46
46
  }
47
47
 
48
48
  export class DirectedGraph<
49
- V = any,
50
- E = any,
51
- VO extends DirectedVertex<V> = DirectedVertex<V>,
52
- EO extends DirectedEdge<E> = DirectedEdge<E>
53
- >
49
+ V = any,
50
+ E = any,
51
+ VO extends DirectedVertex<V> = DirectedVertex<V>,
52
+ EO extends DirectedEdge<E> = DirectedEdge<E>
53
+ >
54
54
  extends AbstractGraph<V, E, VO, EO>
55
- implements IGraph<V, E, VO, EO> {
55
+ implements IGraph<V, E, VO, EO>
56
+ {
56
57
  /**
57
58
  * The constructor function initializes an instance of a class.
58
59
  */
@@ -43,13 +43,14 @@ export class UndirectedEdge<E = number> extends AbstractEdge<E> {
43
43
  }
44
44
 
45
45
  export class UndirectedGraph<
46
- V = any,
47
- E = any,
48
- VO extends UndirectedVertex<V> = UndirectedVertex<V>,
49
- EO extends UndirectedEdge<E> = UndirectedEdge<E>
50
- >
46
+ V = any,
47
+ E = any,
48
+ VO extends UndirectedVertex<V> = UndirectedVertex<V>,
49
+ EO extends UndirectedEdge<E> = UndirectedEdge<E>
50
+ >
51
51
  extends AbstractGraph<V, E, VO, EO>
52
- implements IGraph<V, E, VO, EO> {
52
+ implements IGraph<V, E, VO, EO>
53
+ {
53
54
  /**
54
55
  * The constructor initializes a new Map object to store edges.
55
56
  */
@@ -133,7 +133,7 @@ export class HashMap<K, V> {
133
133
  }
134
134
  }
135
135
 
136
- * entries(): IterableIterator<[K, V]> {
136
+ *entries(): IterableIterator<[K, V]> {
137
137
  for (const bucket of this.table) {
138
138
  if (bucket) {
139
139
  for (const [key, value] of bucket) {
@@ -1,2 +1 @@
1
- export class TreeMap {
2
- }
1
+ export class TreeMap {}
@@ -1,2 +1 @@
1
- export class TreeSet {
2
- }
1
+ export class TreeSet {}
@@ -8,7 +8,7 @@
8
8
  import type {Comparator, DFSOrderPattern} from '../../types';
9
9
 
10
10
  export class Heap<E = any> {
11
- constructor(options: { comparator: Comparator<E>; nodes?: E[] }) {
11
+ constructor(options: {comparator: Comparator<E>; nodes?: E[]}) {
12
12
  this._comparator = options.comparator;
13
13
  if (options.nodes && options.nodes.length > 0) {
14
14
  this._nodes = options.nodes;
@@ -48,7 +48,7 @@ export class Heap<E = any> {
48
48
  * @returns A new Heap instance.
49
49
  * @param options
50
50
  */
51
- static heapify<E>(options: { nodes: E[]; comparator: Comparator<E> }): Heap<E> {
51
+ static heapify<E>(options: {nodes: E[]; comparator: Comparator<E>}): Heap<E> {
52
52
  return new Heap<E>(options);
53
53
  }
54
54
 
@@ -11,7 +11,7 @@ import type {Comparator} from '../../types';
11
11
 
12
12
  export class MaxHeap<E = any> extends Heap<E> {
13
13
  constructor(
14
- options: { comparator: Comparator<E>; nodes?: E[] } = {
14
+ options: {comparator: Comparator<E>; nodes?: E[]} = {
15
15
  comparator: (a: E, b: E) => {
16
16
  if (!(typeof a === 'number' && typeof b === 'number')) {
17
17
  throw new Error('The a, b params of compare function must be number');
@@ -11,7 +11,7 @@ import type {Comparator} from '../../types';
11
11
 
12
12
  export class MinHeap<E = any> extends Heap<E> {
13
13
  constructor(
14
- options: { comparator: Comparator<E>; nodes?: E[] } = {
14
+ options: {comparator: Comparator<E>; nodes?: E[]} = {
15
15
  comparator: (a: E, b: E) => {
16
16
  if (!(typeof a === 'number' && typeof b === 'number')) {
17
17
  throw new Error('The a, b params of compare function must be number');
@@ -594,7 +594,7 @@ export class DoublyLinkedList<E = any> {
594
594
  /**
595
595
  * The function returns an iterator that iterates over the values of a linked list.
596
596
  */
597
- * [Symbol.iterator]() {
597
+ *[Symbol.iterator]() {
598
598
  let current = this.head;
599
599
 
600
600
  while (current) {
@@ -565,7 +565,7 @@ export class SinglyLinkedList<E = any> {
565
565
  /**
566
566
  * The function returns an iterator that iterates over the values of a linked list.
567
567
  */
568
- * [Symbol.iterator]() {
568
+ *[Symbol.iterator]() {
569
569
  let current = this.head;
570
570
 
571
571
  while (current) {
@@ -14,7 +14,7 @@ export class MatrixNTI2D<V = any> {
14
14
  * given initial value or 0 if not provided.
15
15
  * @param options - An object containing the following properties:
16
16
  */
17
- constructor(options: { row: number; col: number; initialVal?: V }) {
17
+ constructor(options: {row: number; col: number; initialVal?: V}) {
18
18
  const {row, col, initialVal} = options;
19
19
  this._matrix = new Array(row).fill(undefined).map(() => new Array(col).fill(initialVal || 0));
20
20
  }
@@ -10,8 +10,7 @@ export class Vector2D {
10
10
  public x: number = 0,
11
11
  public y: number = 0,
12
12
  public w: number = 1 // needed for matrix multiplication
13
- ) {
14
- }
13
+ ) {}
15
14
 
16
15
  /**
17
16
  * The function checks if the x and y values of a point are both zero.
@@ -10,7 +10,7 @@ import type {Comparator} from '../../types';
10
10
 
11
11
  export class MaxPriorityQueue<E = any> extends PriorityQueue<E> {
12
12
  constructor(
13
- options: { comparator: Comparator<E>; nodes?: E[] } = {
13
+ options: {comparator: Comparator<E>; nodes?: E[]} = {
14
14
  comparator: (a: E, b: E) => {
15
15
  if (!(typeof a === 'number' && typeof b === 'number')) {
16
16
  throw new Error('The a, b params of compare function must be number');
@@ -10,7 +10,7 @@ import type {Comparator} from '../../types';
10
10
 
11
11
  export class MinPriorityQueue<E = any> extends PriorityQueue<E> {
12
12
  constructor(
13
- options: { comparator: Comparator<E>; nodes?: E[] } = {
13
+ options: {comparator: Comparator<E>; nodes?: E[]} = {
14
14
  comparator: (a: E, b: E) => {
15
15
  if (!(typeof a === 'number' && typeof b === 'number')) {
16
16
  throw new Error('The a, b params of compare function must be number');
@@ -10,7 +10,7 @@ import {Heap} from '../heap';
10
10
  import {Comparator} from '../../types';
11
11
 
12
12
  export class PriorityQueue<E = any> extends Heap<E> {
13
- constructor(options: { comparator: Comparator<E>; nodes?: E[] }) {
13
+ constructor(options: {comparator: Comparator<E>; nodes?: E[]}) {
14
14
  super(options);
15
15
  }
16
16
  }
@@ -9,8 +9,7 @@ import {DoublyLinkedList} from '../linked-list';
9
9
 
10
10
  // O(n) time complexity of obtaining the value
11
11
  // O(1) time complexity of adding at the beginning and the end
12
- export class Deque<E = any> extends DoublyLinkedList<E> {
13
- }
12
+ export class Deque<E = any> extends DoublyLinkedList<E> {}
14
13
 
15
14
  // O(1) time complexity of obtaining the value
16
15
  // O(n) time complexity of adding at the beginning and the end
@@ -20,9 +19,9 @@ export class ObjectDeque<E = number> {
20
19
  if (capacity !== undefined) this._capacity = capacity;
21
20
  }
22
21
 
23
- protected _nodes: { [key: number]: E } = {};
22
+ protected _nodes: {[key: number]: E} = {};
24
23
 
25
- get nodes(): { [p: number]: E } {
24
+ get nodes(): {[p: number]: E} {
26
25
  return this._nodes;
27
26
  }
28
27
 
@@ -201,7 +201,7 @@ export class Queue<E = any> {
201
201
  return new Queue(this.nodes.slice(this.offset));
202
202
  }
203
203
 
204
- * [Symbol.iterator]() {
204
+ *[Symbol.iterator]() {
205
205
  for (const item of this.nodes) {
206
206
  yield item;
207
207
  }
@@ -1,6 +1,6 @@
1
1
  export type Direction = 'up' | 'right' | 'down' | 'left';
2
2
 
3
- export type Turning = { [key in Direction]: Direction };
3
+ export type Turning = {[key in Direction]: Direction};
4
4
 
5
5
  export type NavigatorParams<T = any> = {
6
6
  matrix: T[][];
@@ -1,5 +1,5 @@
1
1
  export type ToThunkFn = () => ReturnType<TrlFn>;
2
- export type Thunk = () => ReturnType<ToThunkFn> & { __THUNK__: symbol };
2
+ export type Thunk = () => ReturnType<ToThunkFn> & {__THUNK__: symbol};
3
3
  export type TrlFn = (...args: any[]) => any;
4
4
  export type TrlAsyncFn = (...args: any[]) => any;
5
5
 
@@ -1,6 +1,6 @@
1
- export type KeyValueObject = { [key: string]: any };
1
+ export type KeyValueObject = {[key: string]: any};
2
2
 
3
- export type KeyValueObjectWithKey = { [key: string]: any; key: string | number | symbol };
3
+ export type KeyValueObjectWithKey = {[key: string]: any; key: string | number | symbol};
4
4
 
5
5
  export type NonNumberNonObjectButDefined = string | boolean | symbol | null;
6
6
 
@@ -7,18 +7,18 @@ describe('AVL Tree Test', () => {
7
7
 
8
8
  for (const i of arr) tree.add(i, i);
9
9
 
10
- const node6 = tree.get(6);
10
+ const node6 = tree.getNode(6);
11
11
 
12
12
  expect(node6 && tree.getHeight(node6)).toBe(3);
13
13
  expect(node6 && tree.getDepth(node6)).toBe(1);
14
14
 
15
- const getNodeById = tree.get(10);
15
+ const getNodeById = tree.getNode(10);
16
16
  expect(getNodeById?.key).toBe(10);
17
17
 
18
18
  const getMinNodeByRoot = tree.getLeftMost();
19
19
  expect(getMinNodeByRoot?.key).toBe(1);
20
20
 
21
- const node15 = tree.get(15);
21
+ const node15 = tree.getNode(15);
22
22
  const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
23
23
  expect(getMinNodeBySpecificNode?.key).toBe(12);
24
24
 
@@ -116,18 +116,18 @@ describe('AVL Tree Test recursively', () => {
116
116
 
117
117
  for (const i of arr) tree.add(i, i);
118
118
 
119
- const node6 = tree.get(6);
119
+ const node6 = tree.getNode(6);
120
120
 
121
121
  expect(node6 && tree.getHeight(node6)).toBe(3);
122
122
  expect(node6 && tree.getDepth(node6)).toBe(1);
123
123
 
124
- const getNodeById = tree.get(10);
124
+ const getNodeById = tree.getNode(10);
125
125
  expect(getNodeById?.key).toBe(10);
126
126
 
127
127
  const getMinNodeByRoot = tree.getLeftMost();
128
128
  expect(getMinNodeByRoot?.key).toBe(1);
129
129
 
130
- const node15 = tree.get(15);
130
+ const node15 = tree.getNode(15);
131
131
  const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
132
132
  expect(getMinNodeBySpecificNode?.key).toBe(12);
133
133
 
@@ -107,7 +107,7 @@ describe('BinaryTree', () => {
107
107
  expect(tree.has(2)).toBe(true);
108
108
  expect(tree.has(3)).toBe(true);
109
109
  expect(tree.has(4)).toBe(false);
110
- const node4 = tree.get(4);
110
+ const node4 = tree.getNode(4);
111
111
  expect(tree.has(node4)).toBe(false);
112
112
  expect(tree.has(node4, node => node)).toBe(false);
113
113
  expect(tree.has('3', node => node.value?.toString())).toBe(true);
@@ -169,13 +169,13 @@ describe('BinaryTree', () => {
169
169
  new BinaryTreeNode(4, 4)
170
170
  ]);
171
171
 
172
- expect(tree.isSubtreeBST(tree.get(4), IterationType.RECURSIVE)).toBe(true);
173
- expect(tree.isSubtreeBST(tree.get(4), IterationType.ITERATIVE)).toBe(true);
172
+ expect(tree.isSubtreeBST(tree.getNode(4), IterationType.RECURSIVE)).toBe(true);
173
+ expect(tree.isSubtreeBST(tree.getNode(4), IterationType.ITERATIVE)).toBe(true);
174
174
  });
175
175
 
176
176
  it('should subTreeTraverse', () => {
177
177
  tree.addMany([4, 2, 6, 1, 3, 5, 7]);
178
- expect(tree.subTreeTraverse(node => node.key, tree.get(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
178
+ expect(tree.subTreeTraverse(node => node.key, tree.getNode(6), IterationType.RECURSIVE)).toEqual([6, 5, 7]);
179
179
  });
180
180
 
181
181
  it('should clear the tree', () => {
@@ -234,9 +234,9 @@ describe('BinaryTree Morris Traversal', () => {
234
234
  });
235
235
 
236
236
  it('after morris traversals should the structure of the tree be correct', () => {
237
- const node1 = tree.get(1);
238
- const node2 = tree.get(2);
239
- const node3 = tree.get(3);
237
+ const node1 = tree.getNode(1);
238
+ const node2 = tree.getNode(2);
239
+ const node3 = tree.getNode(3);
240
240
  expect(node1?.left).toBe(node2);
241
241
  expect(node1?.right).toBe(node3);
242
242
  });
@@ -339,8 +339,8 @@ describe('BinaryTree', () => {
339
339
  tree.add(3, 'B');
340
340
  tree.add(7, 'C');
341
341
 
342
- const nodeA = tree.get(5);
343
- const nodeB = tree.get(3);
342
+ const nodeA = tree.getNode(5);
343
+ const nodeB = tree.getNode(3);
344
344
 
345
345
  expect(nodeA?.key).toBe(5);
346
346
  expect(nodeA?.value).toBe('A');
@@ -351,7 +351,7 @@ describe('BinaryTree', () => {
351
351
  it('should return null when getting a non-existent node', () => {
352
352
  tree.add(5, 'A');
353
353
 
354
- const node = tree.get(3);
354
+ const node = tree.getNode(3);
355
355
 
356
356
  expect(node).toBe(null);
357
357
  });
@@ -421,7 +421,7 @@ describe('BinaryTree', () => {
421
421
  tree.delete(3);
422
422
 
423
423
  expect(tree.size).toBe(2);
424
- expect(tree.get(3)).toBe(null);
424
+ expect(tree.getNode(3)).toBe(null);
425
425
  });
426
426
 
427
427
  it('should check if the tree is perfectly balanced', () => {
@@ -19,20 +19,20 @@ describe('BST operations test', () => {
19
19
 
20
20
  expect(bst.has(6)).toBe(true);
21
21
 
22
- const node6 = bst.get(6);
22
+ const node6 = bst.getNode(6);
23
23
  expect(node6 && bst.getHeight(6)).toBe(2);
24
24
  expect(node6 && bst.getDepth(6)).toBe(3);
25
25
 
26
- const nodeId10 = bst.get(10);
26
+ const nodeId10 = bst.getNode(10);
27
27
  expect(nodeId10?.key).toBe(10);
28
28
 
29
- const nodeVal9 = bst.get(9, node => node.value);
29
+ const nodeVal9 = bst.getNode(9, node => node.value);
30
30
  expect(nodeVal9?.key).toBe(9);
31
31
 
32
32
  const leftMost = bst.getLeftMost();
33
33
  expect(leftMost?.key).toBe(1);
34
34
 
35
- const node15 = bst.get(15);
35
+ const node15 = bst.getNode(15);
36
36
  const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
37
37
  expect(minNodeBySpecificNode?.key).toBe(12);
38
38
 
@@ -46,7 +46,7 @@ describe('BST operations test', () => {
46
46
 
47
47
  expect(node15).toBeInstanceOf(BSTNode);
48
48
 
49
- const node11 = bst.get(11);
49
+ const node11 = bst.getNode(11);
50
50
  expect(node11).toBeInstanceOf(BSTNode);
51
51
 
52
52
  const dfsInorderNodes = bst.dfs(node => node, 'in');
@@ -222,20 +222,20 @@ describe('BST operations test', () => {
222
222
 
223
223
  expect(objBST.has(6)).toBe(true);
224
224
 
225
- const node6 = objBST.get(6);
225
+ const node6 = objBST.getNode(6);
226
226
  expect(node6 && objBST.getHeight(node6)).toBe(2);
227
227
  expect(node6 && objBST.getDepth(node6)).toBe(3);
228
228
 
229
- const nodeId10 = objBST.get(10);
229
+ const nodeId10 = objBST.getNode(10);
230
230
  expect(nodeId10?.key).toBe(10);
231
231
 
232
- const nodeVal9 = objBST.get(9);
232
+ const nodeVal9 = objBST.getNode(9);
233
233
  expect(nodeVal9?.key).toBe(9);
234
234
 
235
235
  const leftMost = objBST.getLeftMost();
236
236
  expect(leftMost?.key).toBe(1);
237
237
 
238
- const node15 = objBST.get(15);
238
+ const node15 = objBST.getNode(15);
239
239
  expect(node15?.value).toEqual({key: 15, keyA: 15});
240
240
  const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
241
241
  expect(minNodeBySpecificNode?.key).toBe(12);
@@ -250,7 +250,7 @@ describe('BST operations test', () => {
250
250
 
251
251
  expect(node15).toBeInstanceOf(BSTNode);
252
252
 
253
- const node11 = objBST.get(11);
253
+ const node11 = objBST.getNode(11);
254
254
  expect(node11).toBeInstanceOf(BSTNode);
255
255
 
256
256
  const dfsInorderNodes = objBST.dfs(node => node, 'in');
@@ -409,20 +409,21 @@ describe('BST operations test recursively', () => {
409
409
 
410
410
  expect(bst.has(6)).toBe(true);
411
411
 
412
- const node6 = bst.get(6);
412
+ const node6 = bst.getNode(6);
413
413
  expect(node6 && bst.getHeight(6)).toBe(2);
414
414
  expect(node6 && bst.getDepth(6)).toBe(3);
415
415
 
416
- const nodeId10 = bst.get(10);
416
+ const nodeId10 = bst.getNode(10);
417
+ expect(bst.get(10)).toBe(10);
417
418
  expect(nodeId10?.key).toBe(10);
418
419
 
419
- const nodeVal9 = bst.get(9, node => node.value);
420
+ const nodeVal9 = bst.getNode(9, node => node.value);
420
421
  expect(nodeVal9?.key).toBe(9);
421
422
 
422
423
  const leftMost = bst.getLeftMost();
423
424
  expect(leftMost?.key).toBe(1);
424
425
 
425
- const node15 = bst.get(15);
426
+ const node15 = bst.getNode(15);
426
427
  const minNodeBySpecificNode = node15 && bst.getLeftMost(node15);
427
428
  expect(minNodeBySpecificNode?.key).toBe(12);
428
429
 
@@ -436,7 +437,7 @@ describe('BST operations test recursively', () => {
436
437
 
437
438
  expect(node15).toBeInstanceOf(BSTNode);
438
439
 
439
- const node11 = bst.get(11);
440
+ const node11 = bst.getNode(11);
440
441
  expect(node11).toBeInstanceOf(BSTNode);
441
442
 
442
443
  const dfsInorderNodes = bst.dfs(node => node, 'in');
@@ -612,20 +613,21 @@ describe('BST operations test recursively', () => {
612
613
 
613
614
  expect(objBST.has(6)).toBe(true);
614
615
 
615
- const node6 = objBST.get(6);
616
+ const node6 = objBST.getNode(6);
617
+ expect(objBST.get(6)).toEqual({key: 6, keyA: 6});
616
618
  expect(node6 && objBST.getHeight(node6)).toBe(2);
617
619
  expect(node6 && objBST.getDepth(node6)).toBe(3);
618
620
 
619
- const nodeId10 = objBST.get(10);
621
+ const nodeId10 = objBST.getNode(10);
620
622
  expect(nodeId10?.key).toBe(10);
621
623
 
622
- const nodeVal9 = objBST.get(9);
624
+ const nodeVal9 = objBST.getNode(9);
623
625
  expect(nodeVal9?.key).toBe(9);
624
626
 
625
627
  const leftMost = objBST.getLeftMost();
626
628
  expect(leftMost?.key).toBe(1);
627
629
 
628
- const node15 = objBST.get(15);
630
+ const node15 = objBST.getNode(15);
629
631
  expect(node15?.value).toEqual({key: 15, keyA: 15});
630
632
  const minNodeBySpecificNode = node15 && objBST.getLeftMost(node15);
631
633
  expect(minNodeBySpecificNode?.key).toBe(12);
@@ -640,7 +642,7 @@ describe('BST operations test recursively', () => {
640
642
 
641
643
  expect(node15).toBeInstanceOf(BSTNode);
642
644
 
643
- const node11 = objBST.get(11);
645
+ const node11 = objBST.getNode(11);
644
646
  expect(node11).toBeInstanceOf(BSTNode);
645
647
 
646
648
  const dfsInorderNodes = objBST.dfs(node => node, 'in');
@@ -20,8 +20,8 @@ describe('Overall BinaryTree Test', () => {
20
20
  leftMost?.key === 1; // true
21
21
  expect(leftMost?.key).toBe(1);
22
22
  bst.delete(6);
23
- bst.get(6); // null
24
- expect(bst.get(6)).toBeNull();
23
+ bst.getNode(6); // null
24
+ expect(bst.getNode(6)).toBeNull();
25
25
  bst.isAVLBalanced(); // true or false
26
26
  expect(bst.isAVLBalanced()).toBe(true);
27
27
  const bfsIDs: number[] = [];