Skip to content

Commit 6af3070

Browse files
Implement Binary Search Tree with basic operations
This class implements a Binary Search Tree with methods for insertion, deletion, and traversal (inorder, preorder, postorder). It also includes a main method for user interaction to perform these operations.
1 parent fba6292 commit 6af3070

1 file changed

Lines changed: 117 additions & 0 deletions

File tree

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import java.util.Scanner;
2+
3+
public class BinarySearchTree {
4+
5+
static class Node {
6+
int key;
7+
Node left, right;
8+
Node(int k) {
9+
key = k;
10+
}
11+
}
12+
13+
Node root;
14+
15+
public void insert(int key) {
16+
root = insertRec(root, key);
17+
}
18+
19+
private Node insertRec(Node node, int key) {
20+
if (node == null) return new Node(key);
21+
if (key < node.key) node.left = insertRec(node.left, key);
22+
else node.right = insertRec(node.right, key);
23+
return node;
24+
}
25+
26+
public void delete(int key) {
27+
root = deleteRec(root, key);
28+
}
29+
30+
private Node deleteRec(Node node, int key) {
31+
if (node == null) return node;
32+
if (key < node.key) node.left = deleteRec(node.left, key);
33+
else if (key > node.key) node.right = deleteRec(node.right, key);
34+
else {
35+
if (node.left == null) return node.right;
36+
if (node.right == null) return node.left;
37+
node.key = minValue(node.right);
38+
node.right = deleteRec(node.right, node.key);
39+
}
40+
return node;
41+
}
42+
43+
private int minValue(Node node) {
44+
int min = node.key;
45+
while (node.left != null) {
46+
min = node.left.key;
47+
node = node.left;
48+
}
49+
return min;
50+
}
51+
52+
public void inorder() {
53+
inorderRec(root);
54+
System.out.println();
55+
}
56+
57+
private void inorderRec(Node node) {
58+
if (node == null) return;
59+
inorderRec(node.left);
60+
System.out.print(node.key + " ");
61+
inorderRec(node.right);
62+
}
63+
64+
public void preorder() {
65+
preorderRec(root);
66+
System.out.println();
67+
}
68+
69+
private void preorderRec(Node node) {
70+
if (node == null) return;
71+
System.out.print(node.key + " ");
72+
preorderRec(node.left);
73+
preorderRec(node.right);
74+
}
75+
76+
public void postorder() {
77+
postorderRec(root);
78+
System.out.println();
79+
}
80+
81+
private void postorderRec(Node node) {
82+
if (node == null) return;
83+
postorderRec(node.left);
84+
postorderRec(node.right);
85+
System.out.print(node.key + " ");
86+
}
87+
88+
public static void main(String[] args) {
89+
Scanner sc = new Scanner(System.in);
90+
BinarySearchTree bst = new BinarySearchTree();
91+
92+
while (true) {
93+
System.out.println("1.Insert 2.Delete 3.Inorder 4.Preorder 5.Postorder 6.Exit");
94+
int ch = sc.nextInt();
95+
96+
if (ch == 1) {
97+
System.out.print("Enter value: ");
98+
int v = sc.nextInt();
99+
bst.insert(v);
100+
} else if (ch == 2) {
101+
System.out.print("Enter value to delete: ");
102+
int v = sc.nextInt();
103+
bst.delete(v);
104+
} else if (ch == 3) {
105+
bst.inorder();
106+
} else if (ch == 4) {
107+
bst.preorder();
108+
} else if (ch == 5) {
109+
bst.postorder();
110+
} else if (ch == 6) {
111+
break;
112+
} else {
113+
System.out.println("Invalid choice");
114+
}
115+
}
116+
}
117+
}

0 commit comments

Comments
 (0)