data-structure-typed 1.33.7 → 1.33.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 (149) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +25 -14
  3. package/package.json +22 -22
  4. package/.prettierrc.js +0 -16
  5. package/coverage/coverage-final.json +0 -68
  6. package/coverage/coverage-summary.json +0 -69
  7. package/docs/.nojekyll +0 -1
  8. package/docs/index.html +0 -875
  9. package/docs/modules.html +0 -336
  10. package/jest.config.js +0 -8
  11. package/src/data-structures/binary-tree/aa-tree.ts +0 -1
  12. package/src/data-structures/binary-tree/abstract-binary-tree.ts +0 -1608
  13. package/src/data-structures/binary-tree/avl-tree.ts +0 -307
  14. package/src/data-structures/binary-tree/b-tree.ts +0 -1
  15. package/src/data-structures/binary-tree/binary-indexed-tree.ts +0 -76
  16. package/src/data-structures/binary-tree/binary-tree.ts +0 -47
  17. package/src/data-structures/binary-tree/bst.ts +0 -537
  18. package/src/data-structures/binary-tree/index.ts +0 -12
  19. package/src/data-structures/binary-tree/rb-tree.ts +0 -366
  20. package/src/data-structures/binary-tree/segment-tree.ts +0 -260
  21. package/src/data-structures/binary-tree/splay-tree.ts +0 -1
  22. package/src/data-structures/binary-tree/tree-multiset.ts +0 -700
  23. package/src/data-structures/binary-tree/two-three-tree.ts +0 -1
  24. package/src/data-structures/graph/abstract-graph.ts +0 -1040
  25. package/src/data-structures/graph/directed-graph.ts +0 -470
  26. package/src/data-structures/graph/index.ts +0 -4
  27. package/src/data-structures/graph/map-graph.ts +0 -129
  28. package/src/data-structures/graph/undirected-graph.ts +0 -274
  29. package/src/data-structures/hash/coordinate-map.ts +0 -67
  30. package/src/data-structures/hash/coordinate-set.ts +0 -56
  31. package/src/data-structures/hash/hash-map.ts +0 -203
  32. package/src/data-structures/hash/hash-table.ts +0 -277
  33. package/src/data-structures/hash/index.ts +0 -7
  34. package/src/data-structures/hash/pair.ts +0 -1
  35. package/src/data-structures/hash/tree-map.ts +0 -1
  36. package/src/data-structures/hash/tree-set.ts +0 -1
  37. package/src/data-structures/heap/heap.ts +0 -212
  38. package/src/data-structures/heap/index.ts +0 -3
  39. package/src/data-structures/heap/max-heap.ts +0 -31
  40. package/src/data-structures/heap/min-heap.ts +0 -32
  41. package/src/data-structures/index.ts +0 -11
  42. package/src/data-structures/linked-list/doubly-linked-list.ts +0 -636
  43. package/src/data-structures/linked-list/index.ts +0 -3
  44. package/src/data-structures/linked-list/singly-linked-list.ts +0 -501
  45. package/src/data-structures/linked-list/skip-linked-list.ts +0 -166
  46. package/src/data-structures/matrix/index.ts +0 -4
  47. package/src/data-structures/matrix/matrix.ts +0 -27
  48. package/src/data-structures/matrix/matrix2d.ts +0 -213
  49. package/src/data-structures/matrix/navigator.ts +0 -121
  50. package/src/data-structures/matrix/vector2d.ts +0 -316
  51. package/src/data-structures/priority-queue/index.ts +0 -3
  52. package/src/data-structures/priority-queue/max-priority-queue.ts +0 -56
  53. package/src/data-structures/priority-queue/min-priority-queue.ts +0 -57
  54. package/src/data-structures/priority-queue/priority-queue.ts +0 -359
  55. package/src/data-structures/queue/deque.ts +0 -297
  56. package/src/data-structures/queue/index.ts +0 -2
  57. package/src/data-structures/queue/queue.ts +0 -191
  58. package/src/data-structures/stack/index.ts +0 -1
  59. package/src/data-structures/stack/stack.ts +0 -98
  60. package/src/data-structures/tree/index.ts +0 -1
  61. package/src/data-structures/tree/tree.ts +0 -69
  62. package/src/data-structures/trie/index.ts +0 -1
  63. package/src/data-structures/trie/trie.ts +0 -225
  64. package/src/index.ts +0 -4
  65. package/src/interfaces/abstract-binary-tree.ts +0 -189
  66. package/src/interfaces/abstract-graph.ts +0 -31
  67. package/src/interfaces/avl-tree.ts +0 -25
  68. package/src/interfaces/binary-tree.ts +0 -6
  69. package/src/interfaces/bst.ts +0 -31
  70. package/src/interfaces/directed-graph.ts +0 -20
  71. package/src/interfaces/doubly-linked-list.ts +0 -1
  72. package/src/interfaces/heap.ts +0 -1
  73. package/src/interfaces/index.ts +0 -15
  74. package/src/interfaces/navigator.ts +0 -1
  75. package/src/interfaces/priority-queue.ts +0 -1
  76. package/src/interfaces/rb-tree.ts +0 -9
  77. package/src/interfaces/segment-tree.ts +0 -1
  78. package/src/interfaces/singly-linked-list.ts +0 -1
  79. package/src/interfaces/tree-multiset.ts +0 -7
  80. package/src/interfaces/undirected-graph.ts +0 -6
  81. package/src/types/data-structures/abstract-binary-tree.ts +0 -50
  82. package/src/types/data-structures/abstract-graph.ts +0 -11
  83. package/src/types/data-structures/avl-tree.ts +0 -5
  84. package/src/types/data-structures/binary-tree.ts +0 -5
  85. package/src/types/data-structures/bst.ts +0 -13
  86. package/src/types/data-structures/directed-graph.ts +0 -8
  87. package/src/types/data-structures/doubly-linked-list.ts +0 -1
  88. package/src/types/data-structures/hash.ts +0 -1
  89. package/src/types/data-structures/heap.ts +0 -5
  90. package/src/types/data-structures/index.ts +0 -16
  91. package/src/types/data-structures/map-graph.ts +0 -1
  92. package/src/types/data-structures/navigator.ts +0 -13
  93. package/src/types/data-structures/priority-queue.ts +0 -9
  94. package/src/types/data-structures/rb-tree.ts +0 -8
  95. package/src/types/data-structures/segment-tree.ts +0 -1
  96. package/src/types/data-structures/singly-linked-list.ts +0 -1
  97. package/src/types/data-structures/tree-multiset.ts +0 -6
  98. package/src/types/helpers.ts +0 -1
  99. package/src/types/index.ts +0 -3
  100. package/src/types/utils/index.ts +0 -2
  101. package/src/types/utils/utils.ts +0 -6
  102. package/src/types/utils/validate-type.ts +0 -35
  103. package/src/utils/index.ts +0 -1
  104. package/src/utils/utils.ts +0 -79
  105. package/test/integration/avl-tree.test.ts +0 -108
  106. package/test/integration/bst.test.ts +0 -380
  107. package/test/integration/heap.test.js +0 -16
  108. package/test/integration/index.html +0 -44
  109. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -108
  110. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +0 -142
  111. package/test/unit/data-structures/binary-tree/bst.test.ts +0 -380
  112. package/test/unit/data-structures/binary-tree/overall.test.ts +0 -65
  113. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +0 -43
  114. package/test/unit/data-structures/binary-tree/segment-tree.test.ts +0 -50
  115. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +0 -461
  116. package/test/unit/data-structures/graph/abstract-graph.test.ts +0 -5
  117. package/test/unit/data-structures/graph/directed-graph.test.ts +0 -519
  118. package/test/unit/data-structures/graph/index.ts +0 -2
  119. package/test/unit/data-structures/graph/map-graph.test.ts +0 -45
  120. package/test/unit/data-structures/graph/overall.test.ts +0 -49
  121. package/test/unit/data-structures/graph/undirected-graph.test.ts +0 -59
  122. package/test/unit/data-structures/hash/coordinate-map.test.ts +0 -54
  123. package/test/unit/data-structures/hash/coordinate-set.test.ts +0 -41
  124. package/test/unit/data-structures/hash/hash-map.test.ts +0 -104
  125. package/test/unit/data-structures/hash/hash-table.test.ts +0 -184
  126. package/test/unit/data-structures/heap/heap.test.ts +0 -55
  127. package/test/unit/data-structures/heap/max-heap.test.ts +0 -44
  128. package/test/unit/data-structures/heap/min-heap.test.ts +0 -82
  129. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +0 -364
  130. package/test/unit/data-structures/linked-list/index.ts +0 -4
  131. package/test/unit/data-structures/linked-list/linked-list.test.ts +0 -35
  132. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +0 -451
  133. package/test/unit/data-structures/linked-list/skip-linked-list.test.ts +0 -13
  134. package/test/unit/data-structures/linked-list/skip-list.test.ts +0 -55
  135. package/test/unit/data-structures/matrix/matrix.test.ts +0 -54
  136. package/test/unit/data-structures/matrix/matrix2d.test.ts +0 -138
  137. package/test/unit/data-structures/matrix/navigator.test.ts +0 -79
  138. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +0 -106
  139. package/test/unit/data-structures/priority-queue/min-priority-queue.test.ts +0 -105
  140. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -27
  141. package/test/unit/data-structures/queue/deque.test.ts +0 -130
  142. package/test/unit/data-structures/queue/queue.test.ts +0 -199
  143. package/test/unit/data-structures/stack/stack.test.ts +0 -67
  144. package/test/unit/data-structures/tree/tree.test.ts +0 -39
  145. package/test/unit/data-structures/trie/trie.test.ts +0 -95
  146. package/test/utils/index.ts +0 -2
  147. package/test/utils/magnitude.ts +0 -21
  148. package/test/utils/number.ts +0 -3
  149. package/tsconfig.json +0 -29
@@ -1,13 +0,0 @@
1
- import {BSTNode} from '../../data-structures/binary-tree';
2
- import type {BinaryTreeOptions} from './binary-tree';
3
- import {BinaryTreeNodeId} from './abstract-binary-tree';
4
-
5
- export type BSTComparator = (a: BinaryTreeNodeId, b: BinaryTreeNodeId) => number;
6
-
7
- // prettier-ignore
8
- export type BSTNodeNested<T> = BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, BSTNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9
- export type BSTOptions = BinaryTreeOptions & {
10
- comparator?: BSTComparator,
11
- }
12
-
13
- export enum CP {lt = 'lt', eq = 'eq', gt = 'gt'}
@@ -1,8 +0,0 @@
1
- // 0 means unknown, 1 means visiting, 2 means visited;
2
- export type TopologicalStatus = 0 | 1 | 2;
3
-
4
- export enum TopologicalProperty {
5
- VAL = 'VAL',
6
- NODE = 'NODE',
7
- ID = 'ID'
8
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export type HashFunction<K> = (key: K) => number;
@@ -1,5 +0,0 @@
1
- export type HeapOptions<T> = {
2
- priorityExtractor?: (element: T) => number;
3
- // TODO there is an idea that support chaining which is for conveniently using the data structure
4
- // isChaining? : boolean
5
- };
@@ -1,16 +0,0 @@
1
- export * from './binary-tree';
2
- export * from './bst';
3
- export * from './avl-tree';
4
- export * from './segment-tree';
5
- export * from './tree-multiset';
6
- export * from './abstract-graph';
7
- export * from './map-graph';
8
- export * from './abstract-binary-tree';
9
- export * from './rb-tree';
10
- export * from './directed-graph';
11
- export * from './priority-queue';
12
- export * from './heap';
13
- export * from './singly-linked-list';
14
- export * from './doubly-linked-list';
15
- export * from './navigator';
16
- export * from './hash';
@@ -1 +0,0 @@
1
- export type MapGraphCoordinate = [number, number];
@@ -1,13 +0,0 @@
1
- export type Direction = 'up' | 'right' | 'down' | 'left';
2
- export type Turning = {[key in Direction]: Direction};
3
-
4
- export type NavigatorParams<T = any> = {
5
- matrix: T[][];
6
- turning: Turning;
7
- onMove: (cur: [number, number]) => void;
8
- init: {
9
- cur: [number, number];
10
- charDir: Direction;
11
- VISITED: T;
12
- };
13
- };
@@ -1,9 +0,0 @@
1
- export type PriorityQueueComparator<T> = (a: T, b: T) => number;
2
-
3
- export type PriorityQueueOptions<T> = {
4
- nodes?: T[];
5
- isFix?: boolean;
6
- comparator: PriorityQueueComparator<T>;
7
- };
8
-
9
- export type PriorityQueueDFSOrderPattern = 'pre' | 'in' | 'post';
@@ -1,8 +0,0 @@
1
- import {BinaryTreeOptions} from './binary-tree';
2
- import {RBTreeNode} from '../../data-structures/binary-tree';
3
-
4
- export enum RBColor { RED = 'RED', BLACK = 'BLACK'}
5
-
6
- export type RBTreeNodeNested<T> = RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, RBTreeNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7
-
8
- export type RBTreeOptions = BinaryTreeOptions & {}
@@ -1 +0,0 @@
1
- export type SegmentTreeNodeVal = number;
@@ -1 +0,0 @@
1
- export {};
@@ -1,6 +0,0 @@
1
- import {TreeMultisetNode} from '../../data-structures/binary-tree';
2
- import {AVLTreeOptions} from './avl-tree';
3
-
4
- export type TreeMultisetNodeNested<T> = TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, TreeMultisetNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
-
6
- export type TreeMultisetOptions = Omit<AVLTreeOptions, 'isMergeDuplicatedNodeById'> & {}
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- export * from './data-structures';
2
- export * from './helpers';
3
- export * from './utils';
@@ -1,2 +0,0 @@
1
- export * from './utils';
2
- export * from './validate-type';
@@ -1,6 +0,0 @@
1
- export type ToThunkFn = () => ReturnType<TrlFn>;
2
- export type Thunk = () => ReturnType<ToThunkFn> & {__THUNK__: symbol};
3
- export type TrlFn = (...args: any[]) => any;
4
- export type TrlAsyncFn = (...args: any[]) => any;
5
-
6
- export type SpecifyOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
@@ -1,35 +0,0 @@
1
- export type KeyValueObject = {[key: string]: any};
2
-
3
- export type KeyValueObjectWithId = {[key: string]: any; id: string | number | symbol};
4
-
5
- export type NonNumberNonObjectButDefined = string | boolean | symbol | null;
6
-
7
- export type ObjectWithoutId = Omit<KeyValueObject, 'id'>;
8
-
9
- export type ObjectWithNonNumberId = {
10
- [key: string]: any;
11
- id: string | boolean | symbol | null | object | undefined;
12
- };
13
-
14
- export type ObjectWithNumberId = {
15
- [key: string]: any;
16
- id: number;
17
- };
18
-
19
- export type RestrictValById =
20
- | NonNumberNonObjectButDefined
21
- | ObjectWithoutId
22
- | ObjectWithNonNumberId
23
- | ObjectWithNumberId;
24
-
25
- export type DummyAny =
26
- | string
27
- | number
28
- | boolean
29
- | null
30
- | undefined
31
- | object
32
- | symbol
33
- | void
34
- | ((...args: []) => any)
35
- | never;
@@ -1 +0,0 @@
1
- export * from './utils';
@@ -1,79 +0,0 @@
1
- /**
2
- * data-structure-typed
3
- *
4
- * @author Tyler Zeng
5
- * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
- * @license MIT License
7
- */
8
- import type {Thunk, ToThunkFn, TrlAsyncFn, TrlFn} from '../types';
9
-
10
- export const uuidV4 = function () {
11
- return 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {
12
- const r = (Math.random() * 16) | 0,
13
- v = c == 'x' ? r : (r & 0x3) | 0x8;
14
- return v.toString(16);
15
- });
16
- };
17
-
18
- export const arrayRemove = function <T>(array: T[], predicate: (item: T, index: number, array: T[]) => boolean): T[] {
19
- let i = -1,
20
- len = array ? array.length : 0;
21
- const result = [];
22
-
23
- while (++i < len) {
24
- const value = array[i];
25
- if (predicate(value, i, array)) {
26
- result.push(value);
27
- Array.prototype.splice.call(array, i--, 1);
28
- len--;
29
- }
30
- }
31
-
32
- return result;
33
- };
34
-
35
- export const THUNK_SYMBOL = Symbol('thunk');
36
-
37
- export const isThunk = (fnOrValue: any) => {
38
- return typeof fnOrValue === 'function' && fnOrValue.__THUNK__ === THUNK_SYMBOL;
39
- };
40
-
41
- export const toThunk = (fn: ToThunkFn): Thunk => {
42
- const thunk = () => fn();
43
- thunk.__THUNK__ = THUNK_SYMBOL;
44
- return thunk;
45
- };
46
-
47
- export const trampoline = (fn: TrlFn) => {
48
- const cont = (...args: [...Parameters<TrlFn>]) => toThunk(() => fn(...args));
49
-
50
- return Object.assign(
51
- (...args: [...Parameters<TrlFn>]) => {
52
- let result = fn(...args);
53
-
54
- while (isThunk(result) && typeof result === 'function') {
55
- result = result();
56
- }
57
-
58
- return result;
59
- },
60
- {cont}
61
- );
62
- };
63
-
64
- export const trampolineAsync = (fn: TrlAsyncFn) => {
65
- const cont = (...args: [...Parameters<TrlAsyncFn>]) => toThunk(() => fn(...args));
66
-
67
- return Object.assign(
68
- async (...args: [...Parameters<TrlAsyncFn>]) => {
69
- let result = await fn(...args);
70
-
71
- while (isThunk(result) && typeof result === 'function') {
72
- result = await result();
73
- }
74
-
75
- return result;
76
- },
77
- {cont}
78
- );
79
- };
@@ -1,108 +0,0 @@
1
- import {AVLTree} from 'avl-tree-typed';
2
-
3
- describe('AVL Tree Test', () => {
4
- it('should perform various operations on a AVL Tree', () => {
5
- const arr = [11, 3, 15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
6
- const tree = new AVLTree();
7
-
8
- for (const i of arr) tree.add(i, i);
9
-
10
- const node6 = tree.get(6);
11
-
12
- expect(node6 && tree.getHeight(node6)).toBe(3);
13
- expect(node6 && tree.getDepth(node6)).toBe(1);
14
-
15
- const getNodeById = tree.get(10, 'id');
16
- expect(getNodeById?.id).toBe(10);
17
-
18
- const getMinNodeByRoot = tree.getLeftMost();
19
- expect(getMinNodeByRoot?.id).toBe(1);
20
-
21
- const node15 = tree.get(15);
22
- const getMinNodeBySpecificNode = node15 && tree.getLeftMost(node15);
23
- expect(getMinNodeBySpecificNode?.id).toBe(12);
24
-
25
- const subTreeSum = node15 && tree.subTreeSum(node15);
26
- expect(subTreeSum).toBe(70);
27
-
28
- const lesserSum = tree.lesserSum(10);
29
- expect(lesserSum).toBe(45);
30
-
31
- // node15 has type problem. After the uniform design, the generics of containers (DirectedGraph, BST) are based on the type of value. However, this design has a drawback: when I attempt to inherit from the Vertex or BSTNode classes, the types of the results obtained by all methods are those of the parent class.
32
- expect(node15?.val).toBe(15);
33
-
34
- const dfs = tree.DFS('in', 'node');
35
- expect(dfs[0].id).toBe(1);
36
- expect(dfs[dfs.length - 1].id).toBe(16);
37
-
38
- tree.perfectlyBalance();
39
- const bfs = tree.BFS('node');
40
- expect(tree.isPerfectlyBalanced()).toBe(true);
41
- expect(bfs[0].id).toBe(8);
42
- expect(bfs[bfs.length - 1].id).toBe(16);
43
-
44
- expect(tree.remove(11)[0].deleted?.id).toBe(11);
45
- expect(tree.isAVLBalanced()).toBe(true);
46
- expect(node15 && tree.getHeight(node15)).toBe(2);
47
-
48
- expect(tree.remove(1)[0].deleted?.id).toBe(1);
49
- expect(tree.isAVLBalanced()).toBe(true);
50
- expect(tree.getHeight()).toBe(4);
51
-
52
- expect(tree.remove(4)[0].deleted?.id).toBe(4);
53
- expect(tree.isAVLBalanced()).toBe(true);
54
- expect(tree.getHeight()).toBe(4);
55
-
56
- expect(tree.remove(10)[0].deleted?.id).toBe(10);
57
- expect(tree.isAVLBalanced()).toBe(true);
58
- expect(tree.getHeight()).toBe(3);
59
-
60
- expect(tree.remove(15)[0].deleted?.id).toBe(15);
61
- expect(tree.isAVLBalanced()).toBe(true);
62
-
63
- expect(tree.getHeight()).toBe(3);
64
-
65
- expect(tree.remove(5)[0].deleted?.id).toBe(5);
66
- expect(tree.isAVLBalanced()).toBe(true);
67
- expect(tree.getHeight()).toBe(3);
68
-
69
- expect(tree.remove(13)[0].deleted?.id).toBe(13);
70
- expect(tree.isAVLBalanced()).toBe(true);
71
- expect(tree.getHeight()).toBe(3);
72
-
73
- expect(tree.remove(3)[0].deleted?.id).toBe(3);
74
- expect(tree.isAVLBalanced()).toBe(true);
75
- expect(tree.getHeight()).toBe(3);
76
-
77
- expect(tree.remove(8)[0].deleted?.id).toBe(8);
78
- expect(tree.isAVLBalanced()).toBe(true);
79
- expect(tree.getHeight()).toBe(3);
80
-
81
- expect(tree.remove(6)[0].deleted?.id).toBe(6);
82
- expect(tree.remove(6).length).toBe(0);
83
- expect(tree.isAVLBalanced()).toBe(true);
84
- expect(tree.getHeight()).toBe(2);
85
-
86
- expect(tree.remove(7)[0].deleted?.id).toBe(7);
87
- expect(tree.isAVLBalanced()).toBe(true);
88
- expect(tree.getHeight()).toBe(2);
89
-
90
- expect(tree.remove(9)[0].deleted?.id).toBe(9);
91
- expect(tree.isAVLBalanced()).toBe(true);
92
- expect(tree.getHeight()).toBe(2);
93
- expect(tree.remove(14)[0].deleted?.id).toBe(14);
94
- expect(tree.isAVLBalanced()).toBe(true);
95
- expect(tree.getHeight()).toBe(1);
96
-
97
- expect(tree.isAVLBalanced()).toBe(true);
98
- const lastBFSIds = tree.BFS();
99
- expect(lastBFSIds[0]).toBe(12);
100
- expect(lastBFSIds[1]).toBe(2);
101
- expect(lastBFSIds[2]).toBe(16);
102
-
103
- const lastBFSNodes = tree.BFS('node');
104
- expect(lastBFSNodes[0].id).toBe(12);
105
- expect(lastBFSNodes[1].id).toBe(2);
106
- expect(lastBFSNodes[2].id).toBe(16);
107
- });
108
- });