nlptoolkit-datastructure 1.0.0 → 1.0.2

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 (50) hide show
  1. package/dist/Stack.d.ts +7 -0
  2. package/dist/Stack.js +35 -0
  3. package/dist/Stack.js.map +1 -0
  4. package/dist/heap/Heap.d.ts +13 -0
  5. package/dist/heap/Heap.js +74 -0
  6. package/dist/heap/Heap.js.map +1 -0
  7. package/dist/heap/HeapNode.d.ts +5 -0
  8. package/dist/heap/HeapNode.js +23 -0
  9. package/dist/heap/HeapNode.js.map +1 -0
  10. package/dist/heap/MaxHeap.d.ts +5 -0
  11. package/dist/heap/MaxHeap.js +24 -0
  12. package/dist/heap/MaxHeap.js.map +1 -0
  13. package/dist/heap/MinHeap.d.ts +5 -0
  14. package/dist/heap/MinHeap.js +24 -0
  15. package/dist/heap/MinHeap.js.map +1 -0
  16. package/dist/tree/AvlTree.d.ts +12 -0
  17. package/dist/tree/AvlTree.js +107 -0
  18. package/dist/tree/AvlTree.js.map +1 -0
  19. package/dist/tree/AvlTreeNode.d.ts +5 -0
  20. package/dist/tree/AvlTreeNode.js +22 -0
  21. package/dist/tree/AvlTreeNode.js.map +1 -0
  22. package/dist/tree/BTree.d.ts +9 -0
  23. package/dist/tree/BTree.js +58 -0
  24. package/dist/tree/BTree.js.map +1 -0
  25. package/dist/tree/BTreeNode.d.ts +15 -0
  26. package/dist/tree/BTreeNode.js +122 -0
  27. package/dist/tree/BTreeNode.js.map +1 -0
  28. package/dist/tree/Tree.d.ts +10 -0
  29. package/dist/tree/Tree.js +69 -0
  30. package/dist/tree/Tree.js.map +1 -0
  31. package/dist/tree/TreeNode.d.ts +6 -0
  32. package/dist/tree/TreeNode.js +22 -0
  33. package/dist/tree/TreeNode.js.map +1 -0
  34. package/index.js +8 -1
  35. package/package.json +1 -1
  36. package/source/Stack.ts +26 -0
  37. package/source/heap/Heap.ts +73 -0
  38. package/source/heap/HeapNode.ts +13 -0
  39. package/source/heap/MaxHeap.ts +14 -0
  40. package/source/heap/MinHeap.ts +13 -0
  41. package/source/tree/AvlTree.ts +97 -0
  42. package/source/tree/AvlTreeNode.ts +12 -0
  43. package/source/tree/BTree.ts +50 -0
  44. package/source/tree/BTreeNode.ts +116 -0
  45. package/source/tree/Tree.ts +58 -0
  46. package/source/tree/TreeNode.ts +11 -0
  47. package/tests/CounterHashMapTest.ts +1 -1
  48. package/tests/HeapTest.ts +40 -0
  49. package/tests/LRUCacheTest.ts +1 -1
  50. package/tests/TreeTest.ts +47 -0
@@ -0,0 +1,7 @@
1
+ export declare class Stack<T> {
2
+ private list;
3
+ constructor();
4
+ push(item: T): void;
5
+ pop(): T | null;
6
+ isEmpty(): boolean;
7
+ }
package/dist/Stack.js ADDED
@@ -0,0 +1,35 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Stack = void 0;
13
+ class Stack {
14
+ constructor() {
15
+ this.list = [];
16
+ }
17
+ push(item) {
18
+ this.list.push(item);
19
+ }
20
+ pop() {
21
+ let item = this.list.pop();
22
+ if (item == undefined) {
23
+ return null;
24
+ }
25
+ else {
26
+ return item;
27
+ }
28
+ }
29
+ isEmpty() {
30
+ return this.list.length == 0;
31
+ }
32
+ }
33
+ exports.Stack = Stack;
34
+ });
35
+ //# sourceMappingURL=Stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.js","sourceRoot":"","sources":["../source/Stack.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,MAAa,KAAK;QAId;YAFQ,SAAI,GAAc,EAAE,CAAA;QAG5B,CAAC;QAEM,IAAI,CAAC,IAAO;YACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAEM,GAAG;YACN,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;YAC1B,IAAI,IAAI,IAAI,SAAS,EAAC;gBAClB,OAAO,IAAI,CAAA;aACd;iBAAM;gBACH,OAAO,IAAI,CAAA;aACd;QACL,CAAC;QAEM,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChC,CAAC;KAGJ;IAzBD,sBAyBC"}
@@ -0,0 +1,13 @@
1
+ export declare class Heap<T> {
2
+ private readonly array;
3
+ protected comparator: <T>(item1: T, item2: T) => number;
4
+ private count;
5
+ constructor(N: number, comparator: <T>(item1: T, item2: T) => number);
6
+ compare(data1: T, data2: T): number;
7
+ isEmpty(): boolean;
8
+ private swapNode;
9
+ protected percolateDown(no: number): void;
10
+ protected percolateUp(no: number): void;
11
+ delete(): T;
12
+ insert(data: T): void;
13
+ }
@@ -0,0 +1,74 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./HeapNode"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Heap = void 0;
13
+ const HeapNode_1 = require("./HeapNode");
14
+ class Heap {
15
+ constructor(N, comparator) {
16
+ this.comparator = comparator;
17
+ this.array = new Array();
18
+ this.count = 0;
19
+ for (let i = 0; i < N; i++) {
20
+ this.array.push();
21
+ }
22
+ }
23
+ compare(data1, data2) {
24
+ return 0;
25
+ }
26
+ isEmpty() {
27
+ return this.count == 0;
28
+ }
29
+ swapNode(index1, index2) {
30
+ let tmp = this.array[index1];
31
+ this.array[index1] = this.array[index2];
32
+ this.array[index2] = tmp;
33
+ }
34
+ percolateDown(no) {
35
+ let left = 2 * no + 1;
36
+ let right = 2 * no + 2;
37
+ while ((left < this.count && this.compare(this.array[no].getData(), this.array[left].getData()) < 0) ||
38
+ (right < this.count && this.compare(this.array[no].getData(), this.array[right].getData()) < 0)) {
39
+ if (right >= this.count || this.compare(this.array[left].getData(), this.array[right].getData()) > 0) {
40
+ this.swapNode(no, left);
41
+ no = left;
42
+ }
43
+ else {
44
+ this.swapNode(no, right);
45
+ no = right;
46
+ }
47
+ left = 2 * no + 1;
48
+ right = 2 * no + 2;
49
+ }
50
+ }
51
+ percolateUp(no) {
52
+ let parent = Math.floor((no - 1) / 2);
53
+ while (parent >= 0 && this.compare(this.array[parent].getData(), this.array[no].getData()) < 0) {
54
+ this.swapNode(parent, no);
55
+ no = parent;
56
+ parent = Math.floor((no - 1) / 2);
57
+ }
58
+ }
59
+ delete() {
60
+ let tmp = this.array[0];
61
+ this.array[0] = this.array[this.count - 1];
62
+ this.percolateDown(0);
63
+ this.count = this.count - 1;
64
+ return tmp.getData();
65
+ }
66
+ insert(data) {
67
+ this.count = this.count + 1;
68
+ this.array[this.count - 1] = new HeapNode_1.HeapNode(data);
69
+ this.percolateUp(this.count - 1);
70
+ }
71
+ }
72
+ exports.Heap = Heap;
73
+ });
74
+ //# sourceMappingURL=Heap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Heap.js","sourceRoot":"","sources":["../../source/heap/Heap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class HeapNode<T> {
2
+ data: T;
3
+ constructor(data: T);
4
+ getData(): T;
5
+ }
@@ -0,0 +1,23 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HeapNode = void 0;
13
+ class HeapNode {
14
+ constructor(data) {
15
+ this.data = data;
16
+ }
17
+ getData() {
18
+ return this.data;
19
+ }
20
+ }
21
+ exports.HeapNode = HeapNode;
22
+ });
23
+ //# sourceMappingURL=HeapNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeapNode.js","sourceRoot":"","sources":["../../source/heap/HeapNode.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,MAAa,QAAQ;QAIjB,YAAY,IAAO;YACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QACpB,CAAC;QAEM,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,CAAA;QACpB,CAAC;KAEJ;IAZD,4BAYC"}
@@ -0,0 +1,5 @@
1
+ import { Heap } from "./Heap";
2
+ export declare class MaxHeap<T> extends Heap<T> {
3
+ constructor(N: number, comparator: <T>(item1: T, item2: T) => number);
4
+ compare(data1: T, data2: T): number;
5
+ }
@@ -0,0 +1,24 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./Heap"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MaxHeap = void 0;
13
+ const Heap_1 = require("./Heap");
14
+ class MaxHeap extends Heap_1.Heap {
15
+ constructor(N, comparator) {
16
+ super(N, comparator);
17
+ }
18
+ compare(data1, data2) {
19
+ return this.comparator(data1, data2);
20
+ }
21
+ }
22
+ exports.MaxHeap = MaxHeap;
23
+ });
24
+ //# sourceMappingURL=MaxHeap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaxHeap.js","sourceRoot":"","sources":["../../source/heap/MaxHeap.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,iCAA4B;IAG5B,MAAa,OAAW,SAAQ,WAAO;QAEnC,YAAY,CAAS,EAAE,UAA6C;YAChE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,CAAC,KAAQ,EAAE,KAAQ;YACtB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACxC,CAAC;KAEJ;IAVD,0BAUC"}
@@ -0,0 +1,5 @@
1
+ import { Heap } from "./Heap";
2
+ export declare class MinHeap<T> extends Heap<T> {
3
+ constructor(N: number, comparator: <T>(item1: T, item2: T) => number);
4
+ compare(data1: T, data2: T): number;
5
+ }
@@ -0,0 +1,24 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./Heap"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MinHeap = void 0;
13
+ const Heap_1 = require("./Heap");
14
+ class MinHeap extends Heap_1.Heap {
15
+ constructor(N, comparator) {
16
+ super(N, comparator);
17
+ }
18
+ compare(data1, data2) {
19
+ return -this.comparator(data1, data2);
20
+ }
21
+ }
22
+ exports.MinHeap = MinHeap;
23
+ });
24
+ //# sourceMappingURL=MinHeap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinHeap.js","sourceRoot":"","sources":["../../source/heap/MinHeap.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,iCAA4B;IAE5B,MAAa,OAAW,SAAQ,WAAO;QAEnC,YAAY,CAAS,EAAE,UAA6C;YAChE,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;QACxB,CAAC;QAED,OAAO,CAAC,KAAQ,EAAE,KAAQ;YACtB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACzC,CAAC;KAEJ;IAVD,0BAUC"}
@@ -0,0 +1,12 @@
1
+ import { Tree } from "./Tree";
2
+ import { AvlTreeNode } from "./AvlTreeNode";
3
+ export declare class AvlTree<T> extends Tree<T> {
4
+ constructor(comparator: <T>(item1: T, item2: T) => number);
5
+ height(d: AvlTreeNode<T>): number;
6
+ private rotateLeft;
7
+ private rotateRight;
8
+ private doubleRotateLeft;
9
+ private doubleRotateRight;
10
+ insert(node: AvlTreeNode<T>): void;
11
+ insertData(item: T): void;
12
+ }
@@ -0,0 +1,107 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./Tree", "./AvlTreeNode", "../Stack"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AvlTree = void 0;
13
+ const Tree_1 = require("./Tree");
14
+ const AvlTreeNode_1 = require("./AvlTreeNode");
15
+ const Stack_1 = require("../Stack");
16
+ class AvlTree extends Tree_1.Tree {
17
+ constructor(comparator) {
18
+ super(comparator);
19
+ }
20
+ height(d) {
21
+ if (d == null) {
22
+ return 0;
23
+ }
24
+ else {
25
+ return d.height;
26
+ }
27
+ }
28
+ rotateLeft(k2) {
29
+ let k1 = k2.left;
30
+ k2.left = k1.right;
31
+ k1.right = k2;
32
+ k2.height = Math.max(this.height(k2.left), this.height(k2.right)) + 1;
33
+ k1.height = Math.max(this.height(k1.left), k1.right.height) + 1;
34
+ return k1;
35
+ }
36
+ rotateRight(k1) {
37
+ let k2 = k1.right;
38
+ k1.right = k2.left;
39
+ k2.left = k1;
40
+ k2.height = Math.max(k2.left.height, this.height(k2.right)) + 1;
41
+ k1.height = Math.max(this.height(k1.left), this.height(k1.right)) + 1;
42
+ return k2;
43
+ }
44
+ doubleRotateLeft(k3) {
45
+ k3.left = this.rotateRight(k3.left);
46
+ return this.rotateLeft(k3);
47
+ }
48
+ doubleRotateRight(k1) {
49
+ k1.right = this.rotateLeft(k1.right);
50
+ return this.rotateRight(k1);
51
+ }
52
+ insert(node) {
53
+ let LEFT = 1, RIGHT = 2;
54
+ let y = null;
55
+ let x = this.root;
56
+ let t;
57
+ let dir1 = 0, dir2 = 0;
58
+ let c = new Stack_1.Stack();
59
+ while (x != null) {
60
+ y = x;
61
+ c.push(y);
62
+ dir1 = dir2;
63
+ if (this.comparator(node.data, x.data) < 0) {
64
+ x = x.left;
65
+ dir2 = LEFT;
66
+ }
67
+ else {
68
+ x = x.right;
69
+ dir2 = RIGHT;
70
+ }
71
+ }
72
+ this.insertChild(y, node);
73
+ while (!c.isEmpty()) {
74
+ x = c.pop();
75
+ if (x != null) {
76
+ x.height = Math.max(this.height(x.left), this.height(x.right)) + 1;
77
+ if (Math.abs(this.height(x.left) - this.height(x.right)) == 2) {
78
+ if (dir1 == LEFT) {
79
+ if (dir2 == LEFT) {
80
+ t = this.rotateLeft(x);
81
+ }
82
+ else {
83
+ t = this.doubleRotateLeft(x);
84
+ }
85
+ }
86
+ else {
87
+ if (dir2 == LEFT) {
88
+ t = this.doubleRotateRight(x);
89
+ }
90
+ else {
91
+ t = this.rotateRight(x);
92
+ }
93
+ }
94
+ y = c.pop();
95
+ this.insertChild(y, t);
96
+ break;
97
+ }
98
+ }
99
+ }
100
+ }
101
+ insertData(item) {
102
+ this.insert(new AvlTreeNode_1.AvlTreeNode(item));
103
+ }
104
+ }
105
+ exports.AvlTree = AvlTree;
106
+ });
107
+ //# sourceMappingURL=AvlTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvlTree.js","sourceRoot":"","sources":["../../source/tree/AvlTree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TreeNode } from "./TreeNode";
2
+ export declare class AvlTreeNode<T> extends TreeNode<T> {
3
+ height: number;
4
+ constructor(data: T);
5
+ }
@@ -0,0 +1,22 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./TreeNode"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AvlTreeNode = void 0;
13
+ const TreeNode_1 = require("./TreeNode");
14
+ class AvlTreeNode extends TreeNode_1.TreeNode {
15
+ constructor(data) {
16
+ super(data);
17
+ this.height = 1;
18
+ }
19
+ }
20
+ exports.AvlTreeNode = AvlTreeNode;
21
+ });
22
+ //# sourceMappingURL=AvlTreeNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AvlTreeNode.js","sourceRoot":"","sources":["../../source/tree/AvlTreeNode.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,yCAAoC;IAEpC,MAAa,WAAe,SAAQ,mBAAW;QAI3C,YAAa,IAAO;YAChB,KAAK,CAAC,IAAI,CAAC,CAAA;YACX,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACnB,CAAC;KAEJ;IATD,kCASC"}
@@ -0,0 +1,9 @@
1
+ import { BTreeNode } from "./BTreeNode";
2
+ export declare class BTree<T> {
3
+ root: BTreeNode<T> | null;
4
+ comparator: <T>(item1: T, item2: T) => number;
5
+ d: number;
6
+ constructor(d: number, comparator: <T>(item1: T, item2: T) => number);
7
+ search(value: T): BTreeNode<T> | null;
8
+ insertData(data: T): void;
9
+ }
@@ -0,0 +1,58 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "./BTreeNode"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BTree = void 0;
13
+ const BTreeNode_1 = require("./BTreeNode");
14
+ class BTree {
15
+ constructor(d, comparator) {
16
+ this.root = null;
17
+ this.comparator = comparator;
18
+ this.d = d;
19
+ }
20
+ search(value) {
21
+ let b = this.root;
22
+ while (b != null && !b.leaf) {
23
+ let child = b.position(value, this.comparator);
24
+ if (child < b.m && b.K[child] == value) {
25
+ return b;
26
+ }
27
+ b = b.children[child];
28
+ }
29
+ if (b != null) {
30
+ let child = b.position(value, this.comparator);
31
+ if (child < b.m && b.K[child] == value) {
32
+ return b;
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ insertData(data) {
38
+ if (this.root == null) {
39
+ this.root = new BTreeNode_1.BTreeNode(this.d, undefined, undefined, undefined);
40
+ }
41
+ if (this.root.leaf) {
42
+ let s = this.root.insertLeaf(data, this.comparator);
43
+ if (s != null) {
44
+ let tmp = this.root;
45
+ this.root = new BTreeNode_1.BTreeNode(this.d, tmp, s, tmp.K[this.d]);
46
+ }
47
+ }
48
+ else {
49
+ let s = this.root.insertNode(data, this.comparator, true);
50
+ if (s != null) {
51
+ this.root = s;
52
+ }
53
+ }
54
+ }
55
+ }
56
+ exports.BTree = BTree;
57
+ });
58
+ //# sourceMappingURL=BTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BTree.js","sourceRoot":"","sources":["../../source/tree/BTree.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,2CAAsC;IAEtC,MAAa,KAAK;QAMd,YAAY,CAAS,EAAE,UAA6C;YAJpE,SAAI,GAAyB,IAAI,CAAC;YAK9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;YAC5B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;QAEM,MAAM,CAAC,KAAQ;YAClB,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAClB,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAC;gBACxB,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC9C,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,EAAC;oBACnC,OAAO,CAAC,CAAA;iBACX;gBACD,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;aACxB;YACD,IAAI,CAAC,IAAI,IAAI,EAAC;gBACV,IAAI,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC9C,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,EAAC;oBACnC,OAAO,CAAC,CAAA;iBACX;aACJ;YACD,OAAO,IAAI,CAAA;QACf,CAAC;QAEM,UAAU,CAAC,IAAO;YACrB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAC;gBAClB,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,CAAI,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;aACxE;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAC;gBACf,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;gBACnD,IAAI,CAAC,IAAI,IAAI,EAAC;oBACV,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA;oBACnB,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,CAAI,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC/D;aACJ;iBAAM;gBACH,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,IAAI,EAAC;oBACV,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;iBACjB;aACJ;QACL,CAAC;KAEJ;IA/CD,sBA+CC"}
@@ -0,0 +1,15 @@
1
+ export declare class BTreeNode<T> {
2
+ K: Array<T>;
3
+ m: number;
4
+ d: number;
5
+ leaf: boolean;
6
+ children: Array<BTreeNode<T>>;
7
+ constructor(d: number, firstChild: BTreeNode<T> | undefined, secondChild: BTreeNode<T> | undefined, newK: T | undefined);
8
+ position(value: T, comparator: <T>(item1: T, item2: T) => number): number;
9
+ private insertIntoK;
10
+ private moveHalfOfTheKToNewNode;
11
+ private moveHalfOfTheChildrenToNewNode;
12
+ private moveHalfOfTheElementsToNewNode;
13
+ insertNode(value: T, comparator: <T>(item1: T, item2: T) => number, isRoot: boolean): BTreeNode<T> | null;
14
+ insertLeaf(value: T, comparator: <T>(item1: T, item2: T) => number): BTreeNode<T> | null;
15
+ }
@@ -0,0 +1,122 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BTreeNode = void 0;
13
+ class BTreeNode {
14
+ constructor(d, firstChild, secondChild, newK) {
15
+ this.d = d;
16
+ this.K = [];
17
+ this.children = [];
18
+ if (firstChild == undefined) {
19
+ this.m = 0;
20
+ this.leaf = true;
21
+ }
22
+ else {
23
+ this.m = 1;
24
+ this.leaf = false;
25
+ this.children[0] = firstChild;
26
+ if (secondChild != undefined) {
27
+ this.children[1] = secondChild;
28
+ }
29
+ if (newK != undefined) {
30
+ this.K[0] = newK;
31
+ }
32
+ }
33
+ }
34
+ position(value, comparator) {
35
+ if (this.m == 0) {
36
+ return 0;
37
+ }
38
+ if (comparator(value, this.K[this.m - 1]) > 0) {
39
+ return this.m;
40
+ }
41
+ else {
42
+ for (let i = 0; i < this.m; i++) {
43
+ if (comparator(value, this.K[i]) <= 0) {
44
+ return i;
45
+ }
46
+ }
47
+ }
48
+ return -1;
49
+ }
50
+ insertIntoK(index, insertedK) {
51
+ for (let i = this.m; i > index; i--) {
52
+ this.K[i] = this.K[i - 1];
53
+ }
54
+ this.K[index] = insertedK;
55
+ }
56
+ moveHalfOfTheKToNewNode(newNode) {
57
+ for (let i = 0; i < this.d; i++) {
58
+ newNode.K[i] = this.K[i + this.d + 1];
59
+ }
60
+ newNode.m = this.d;
61
+ }
62
+ moveHalfOfTheChildrenToNewNode(newNode) {
63
+ for (let i = 0; i < this.d; i++) {
64
+ newNode.children[i] = this.children[i + this.d + 1];
65
+ }
66
+ }
67
+ moveHalfOfTheElementsToNewNode(newNode) {
68
+ this.moveHalfOfTheKToNewNode(newNode);
69
+ this.moveHalfOfTheChildrenToNewNode(newNode);
70
+ }
71
+ insertNode(value, comparator, isRoot) {
72
+ let s;
73
+ let newNode;
74
+ let child;
75
+ child = this.position(value, comparator);
76
+ if (!this.children[child].leaf) {
77
+ s = this.children[child].insertNode(value, comparator, false);
78
+ }
79
+ else {
80
+ s = this.children[child].insertLeaf(value, comparator);
81
+ }
82
+ if (s == null) {
83
+ return null;
84
+ }
85
+ this.insertIntoK(child, this.children[child].K[this.d]);
86
+ if (this.m < 2 * this.d) {
87
+ this.children[child + 1] = s;
88
+ this.m++;
89
+ return null;
90
+ }
91
+ else {
92
+ newNode = new BTreeNode(this.d, undefined, undefined, undefined);
93
+ newNode.leaf = false;
94
+ this.moveHalfOfTheElementsToNewNode(newNode);
95
+ newNode.children[this.d] = s;
96
+ this.m = this.d;
97
+ if (isRoot) {
98
+ return new BTreeNode(this.d, this, newNode, this.K[this.d]);
99
+ }
100
+ else {
101
+ return newNode;
102
+ }
103
+ }
104
+ }
105
+ insertLeaf(value, comparator) {
106
+ let child = this.position(value, comparator);
107
+ this.insertIntoK(child, value);
108
+ if (this.m < 2 * this.d) {
109
+ this.m++;
110
+ return null;
111
+ }
112
+ else {
113
+ let newNode = new BTreeNode(this.d, undefined, undefined, undefined);
114
+ this.moveHalfOfTheKToNewNode(newNode);
115
+ this.m = this.d;
116
+ return newNode;
117
+ }
118
+ }
119
+ }
120
+ exports.BTreeNode = BTreeNode;
121
+ });
122
+ //# sourceMappingURL=BTreeNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BTreeNode.js","sourceRoot":"","sources":["../../source/tree/BTreeNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { TreeNode } from "./TreeNode";
2
+ export declare class Tree<T> {
3
+ protected root: TreeNode<T> | null;
4
+ protected comparator: <T>(item1: T, item2: T) => number;
5
+ constructor(comparator: <T>(item1: T, item2: T) => number);
6
+ search(value: T): TreeNode<T> | null;
7
+ protected insertChild(parent: TreeNode<T> | null, child: TreeNode<T>): void;
8
+ insert(node: TreeNode<T>): void;
9
+ insertData(data: T): void;
10
+ }