class Node {
int value;
Node left, right;
public Node(int value) {
[Link] = value;
left = right = null;
public class BinarySearchTree {
Node root;
public BinarySearchTree() {
root = null;
// Insert a value into the BST
public void insert(int value) {
root = insertRec(root, value);
private Node insertRec(Node root, int value) {
if (root == null) {
private Node insertRec(Node root, int value) {
if (root == null) {
root = new Node(value);
return root;
}
if (value < [Link]) {
[Link] = insertRec([Link], value);
} else if (value > [Link]) {
[Link] = insertRec([Link], value);
}
return root;
}
// In-order Traversal
public void inOrder() {
inOrderRec(root);
[Link]();
}
private void inOrderRec(Node root) {
if (root != null) {
inOrderRec([Link]);
[Link]([Link] + " ");
inOrderRec([Link]);
}
}
// Pre-order Traversal
public void preOrder() {
preOrderRec(root);
[Link]();
}
private void preOrderRec(Node root) {
if (root != null) {
[Link]([Link] + " ");
preOrderRec([Link]);
preOrderRec([Link]);
}
}
// Post-order Traversal
public void postOrder() {
postOrderRec(root);
[Link]();
}
private void postOrderRec(Node root) {
if (root != null) {
postOrderRec([Link]);
postOrderRec([Link]);
[Link]([Link] + " ");
}}
public static void main(String[] args) {
BinarySearchTree bst = new BinarySearchTree();
int[] values = {50, 30, 20, 40, 70, 60, 80};
// Insert values into BST
for (int value : values) {
[Link](value);
}
// Display traversals
[Link]("In-order Traversal:");
[Link]();
[Link]("Pre-order Traversal:");
[Link]();
[Link]("Post-order Traversal:");
[Link]();
}
}