Skip to content

Commit a739185

Browse files
Implement Binary Search Tree with basic operations
1 parent 430be4d commit a739185

1 file changed

Lines changed: 147 additions & 0 deletions

File tree

BinarySearchTree.java

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
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) {
21+
return new Node(key);
22+
} else {
23+
if (key < node.key) {
24+
node.left = insertRec(node.left, key);
25+
} else {
26+
node.right = insertRec(node.right, key);
27+
}
28+
return node;
29+
}
30+
}
31+
32+
public void delete(int key) {
33+
root = deleteRec(root, key);
34+
}
35+
36+
private Node deleteRec(Node node, int key) {
37+
if (node == null) {
38+
return node;
39+
} else {
40+
if (key < node.key) {
41+
node.left = deleteRec(node.left, key);
42+
} else if (key > node.key) {
43+
node.right = deleteRec(node.right, key);
44+
} else {
45+
if (node.left == null) {
46+
return node.right;
47+
} else {
48+
if (node.right == null) {
49+
return node.left;
50+
} else {
51+
node.key = minValue(node.right);
52+
node.right = deleteRec(node.right, node.key);
53+
}
54+
}
55+
}
56+
return node;
57+
}
58+
}
59+
60+
private int minValue(Node node) {
61+
int min = node.key;
62+
while (node.left != null) {
63+
min = node.left.key;
64+
node = node.left;
65+
}
66+
return min;
67+
}
68+
69+
public void inorder() {
70+
inorderRec(root);
71+
System.out.println();
72+
}
73+
74+
private void inorderRec(Node node) {
75+
if (node != null) {
76+
inorderRec(node.left);
77+
System.out.print(node.key + " ");
78+
inorderRec(node.right);
79+
}
80+
}
81+
82+
public void preorder() {
83+
preorderRec(root);
84+
System.out.println();
85+
}
86+
87+
private void preorderRec(Node node) {
88+
if (node != null) {
89+
System.out.print(node.key + " ");
90+
preorderRec(node.left);
91+
preorderRec(node.right);
92+
}
93+
}
94+
95+
public void postorder() {
96+
postorderRec(root);
97+
System.out.println();
98+
}
99+
100+
private void postorderRec(Node node) {
101+
if (node != null) {
102+
postorderRec(node.left);
103+
postorderRec(node.right);
104+
System.out.print(node.key + " ");
105+
}
106+
}
107+
108+
public static void main(String[] args) {
109+
Scanner sc = new Scanner(System.in);
110+
BinarySearchTree bst = new BinarySearchTree();
111+
112+
while (true) {
113+
System.out.println("1.Insert 2.Delete 3.Inorder 4.Preorder 5.Postorder 6.Exit");
114+
int ch = sc.nextInt();
115+
116+
if (ch == 1) {
117+
System.out.print("Enter value: ");
118+
int v = sc.nextInt();
119+
bst.insert(v);
120+
} else {
121+
if (ch == 2) {
122+
System.out.print("Enter value to delete: ");
123+
int v = sc.nextInt();
124+
bst.delete(v);
125+
} else {
126+
if (ch == 3) {
127+
bst.inorder();
128+
} else {
129+
if (ch == 4) {
130+
bst.preorder();
131+
} else {
132+
if (ch == 5) {
133+
bst.postorder();
134+
} else {
135+
if (ch == 6) {
136+
break;
137+
} else {
138+
System.out.println("Invalid choice");
139+
}
140+
}
141+
}
142+
}
143+
}
144+
}
145+
}
146+
}
147+
}

0 commit comments

Comments
 (0)