@@ -30,7 +30,7 @@ private int getBalanceFactor(AVLNode node) {
30
30
if (node == null ) {
31
31
return 0 ;
32
32
}
33
- return getHeight (node .left ) - getHeight (node .left );
33
+ return getHeight (node .left ) - getHeight (node .right );
34
34
}
35
35
36
36
private AVLNode add (int val , AVLNode root ) {
@@ -45,23 +45,21 @@ private AVLNode add(int val, AVLNode root) {
45
45
}
46
46
root .height = 1 + Math .max (getHeight (root .left ), getHeight (root .right ));
47
47
int balanceFactor = getBalanceFactor (root );
48
- // Left Left Rotation
49
- if (balanceFactor > 1 && root .left .val > val ) {
50
- root = leftRotate (root );
48
+ if (balanceFactor > 1 ) {
49
+ if (val < root .left .val ) {
50
+ return rightRotate (root );
51
+ } else if (val > root .left .val ) {
52
+ root .left = leftRotate (root .left );
53
+ return rightRotate (root );
54
+ }
51
55
}
52
- // Right Right Rotation
53
- if (balanceFactor < -1 && root .right .val < val ) {
54
- root = rightRotate (root );
55
- }
56
- // Left Right Rotation
57
- if (balanceFactor > 1 && root .left .val < val ) {
58
- root .left = leftRotate (root .left );
59
- root = rightRotate (root );
60
- }
61
- // Right Left Rotation
62
- if (balanceFactor < -1 && root .right .val > val ) {
63
- root .right = rightRotate (root .right );
64
- root = leftRotate (root );
56
+ if (balanceFactor < -1 ) {
57
+ if (val > root .right .val ) {
58
+ return leftRotate (root );
59
+ } else if (val < root .right .val ) {
60
+ root .right = rightRotate (root .right );
61
+ return leftRotate (root );
62
+ }
65
63
}
66
64
return root ;
67
65
}
@@ -106,4 +104,18 @@ public String toString() {
106
104
return inOrder ().toString ();
107
105
}
108
106
107
+ public void display () {
108
+ display (root );
109
+ }
110
+
111
+ private void display (AVLNode node ) {
112
+ if (node == null ) {
113
+ System .out .print (null + " " );
114
+ return ;
115
+ }
116
+ System .out .print (node .val + " " );
117
+ display (node .left );
118
+ display (node .right );
119
+ }
120
+
109
121
}
0 commit comments