Skip to content

Commit 406ca5e

Browse files
Added AVL tree implementation with detailed comments
1 parent d0024b7 commit 406ca5e

File tree

4 files changed

+15
-29
lines changed

4 files changed

+15
-29
lines changed

src/main/java/com/thealgorithms/tree/AVL.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ public List<Integer> postorderList() {
113113
return res;
114114
}
115115

116-
117116
/**
118117
* Recursive insert:
119118
* 1. Insert key like a normal BST
@@ -249,7 +248,6 @@ private Node balanceNode(Node node) {
249248
// Case 1: Left Left (LL)
250249
if (balance > 1 && getBalance(node.left) >= 0) return rightRotate(node);
251250

252-
253251
// Case 2: Left Right (LR)
254252
if (balance > 1 && getBalance(node.left) < 0) {
255253
node.left = leftRotate(node.left);
@@ -259,7 +257,6 @@ private Node balanceNode(Node node) {
259257
// Case 3: Right Right (RR)
260258
if (balance < -1 && getBalance(node.right) <= 0) return leftRotate(node);
261259

262-
263260
// Case 4: Right Left (RL)
264261
if (balance < -1 && getBalance(node.right) > 0) {
265262
node.right = rightRotate(node.right);

src/main/java/com/thealgorithms/tree/BST.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,6 @@ public int findMax() {
184184
return current.key;
185185
}
186186

187-
188187
/**
189188
* Print inorder traversal (Left, Node, Right).
190189
* InOrder -> Left, key, Right
@@ -242,7 +241,7 @@ private void printPostorderRecursive(Node node) {
242241
System.out.print(node.key + " "); // node
243242
}
244243

245-
public List<Integer> inorderList() {
244+
public List<Integer> inorderList() {
246245
List<Integer> result = new ArrayList<>();
247246
inorderToList(root, result);
248247
return result;
@@ -257,7 +256,6 @@ private void inorderToList(Node node, List<Integer> out) {
257256
inorderToList(node.right, out);
258257
}
259258

260-
261259
public List<Integer> preorderList() {
262260
List<Integer> result = new ArrayList<>();
263261
preorderToList(root, result);
@@ -301,15 +299,12 @@ public static void main(String[] args) {
301299
System.out.println("Preorder List: " + bst.preorderList());
302300
System.out.println("Postorder List: " + bst.postorderList());
303301

304-
305302
System.out.println("Search 40: " + bst.search(40)); // true
306303
System.out.println("Search 99: " + bst.search(99)); // false
307304

308-
309305
System.out.println("Min: " + bst.findMin()); // 20
310306
System.out.println("Max: " + bst.findMax()); // 80
311307

312-
313308
bst.delete(20);
314309
System.out.println("After deleting 20 (leaf): " + bst.inorderList());
315310

src/test/java/com/thealgorithms/tree/AVLTest.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,9 @@ private Node insertRecursive(Node node, int key) {
9191

9292
if (key < node.key) {
9393
node.left = insertRecursive(node.left, key);
94-
}
95-
else if (key > node.key) {
94+
} else if (key > node.key) {
9695
node.right = insertRecursive(node.right, key);
97-
}
98-
else {
96+
} else {
9997
return node; // duplicates ignored
10098
}
10199

@@ -110,11 +108,9 @@ private Node deleteRecursive(Node node, int key) {
110108

111109
if (key < node.key) {
112110
node.left = deleteRecursive(node.left, key);
113-
}
114-
else if (key > node.key) {
111+
} else if (key > node.key) {
115112
node.right = deleteRecursive(node.right, key);
116-
}
117-
else {
113+
} else {
118114
if (node.left == null || node.right == null) {
119115
Node temp = (node.left != null) ? node.left : node.right;
120116
if (temp == null) {

src/test/java/com/thealgorithms/tree/BSTTest.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ private static class Node {
2727

2828
// Root of the BST
2929
// the first of Node tree
30-
//0->
30+
// 0->
3131
private Node root;
3232

3333
/** Create an empty BST. */
@@ -182,7 +182,6 @@ public int findMax() {
182182
return current.key;
183183
}
184184

185-
186185
/**
187186
* Print inorder traversal (Left, Node, Right).
188187
* InOrder -> Left, key, Right
@@ -197,9 +196,9 @@ private void printInorderRecursive(Node node) {
197196
if (node == null) {
198197
return;
199198
}
200-
printInorderRecursive(node.left); // left
201-
System.out.print(node.key + " "); // node
202-
printInorderRecursive(node.right); // right
199+
printInorderRecursive(node.left); // left
200+
System.out.print(node.key + " "); // node
201+
printInorderRecursive(node.right); // right
203202
}
204203

205204
/**
@@ -216,9 +215,9 @@ private void printPreorderRecursive(Node node) {
216215
if (node == null) {
217216
return;
218217
}
219-
System.out.print(node.key + " "); // node
220-
printPreorderRecursive(node.left); // left
221-
printPreorderRecursive(node.right); // right
218+
System.out.print(node.key + " "); // node
219+
printPreorderRecursive(node.left); // left
220+
printPreorderRecursive(node.right); // right
222221
}
223222

224223
/**
@@ -235,9 +234,9 @@ private void printPostorderRecursive(Node node) {
235234
if (node == null) {
236235
return;
237236
}
238-
printPostorderRecursive(node.left); // left
239-
printPostorderRecursive(node.right); // right
240-
System.out.print(node.key + " "); // node
237+
printPostorderRecursive(node.left); // left
238+
printPostorderRecursive(node.right); // right
239+
System.out.print(node.key + " "); // node
241240
}
242241

243242
public List<Integer> inorderList() {
@@ -255,7 +254,6 @@ private void inorderToList(Node node, List<Integer> out) {
255254
inorderToList(node.right, out);
256255
}
257256

258-
259257
public List<Integer> preorderList() {
260258
List<Integer> result = new ArrayList<>();
261259
preorderToList(root, result);

0 commit comments

Comments
 (0)