1
1
import BinarySearchTree from '../binary-search-tree/BinarySearchTree' ;
2
2
3
3
export default class AvlTree extends BinarySearchTree {
4
+ /**
5
+ * @param {* } value
6
+ */
4
7
insert ( value ) {
5
8
// Do the normal BST insert.
6
9
super . insert ( value ) ;
@@ -13,6 +16,9 @@ export default class AvlTree extends BinarySearchTree {
13
16
}
14
17
}
15
18
19
+ /**
20
+ * @param {BinarySearchTreeNode } node
21
+ */
16
22
balance ( node ) {
17
23
// If balance factor is not OK then try to balance the node.
18
24
if ( node . balanceFactor > 1 ) {
@@ -36,6 +42,9 @@ export default class AvlTree extends BinarySearchTree {
36
42
}
37
43
}
38
44
45
+ /**
46
+ * @param {BinarySearchTreeNode } rootNode
47
+ */
39
48
rotateLeftLeft ( rootNode ) {
40
49
// Detach left node from root node.
41
50
const leftNode = rootNode . left ;
@@ -59,6 +68,9 @@ export default class AvlTree extends BinarySearchTree {
59
68
leftNode . setRight ( rootNode ) ;
60
69
}
61
70
71
+ /**
72
+ * @param {BinarySearchTreeNode } rootNode
73
+ */
62
74
rotateLeftRight ( rootNode ) {
63
75
// Detach left node from rootNode since it is going to be replaced.
64
76
const leftNode = rootNode . left ;
@@ -78,6 +90,9 @@ export default class AvlTree extends BinarySearchTree {
78
90
this . rotateLeftLeft ( rootNode ) ;
79
91
}
80
92
93
+ /**
94
+ * @param {BinarySearchTreeNode } rootNode
95
+ */
81
96
rotateRightLeft ( rootNode ) {
82
97
// Detach right node from rootNode since it is going to be replaced.
83
98
const rightNode = rootNode . right ;
@@ -97,6 +112,9 @@ export default class AvlTree extends BinarySearchTree {
97
112
this . rotateRightRight ( rootNode ) ;
98
113
}
99
114
115
+ /**
116
+ * @param {BinarySearchTreeNode } rootNode
117
+ */
100
118
rotateRightRight ( rootNode ) {
101
119
// Detach right node from root node.
102
120
const rightNode = rootNode . right ;
0 commit comments