class BinarySearchTree { }
class Node { // Search for a value in the BST
int data; public boolean search(int data) {
Node left, right; return searchRec(root, data);
}
public Node(int data) {
[Link] = data; // Recursive search function
left = right = null; private boolean searchRec(Node root, int data) {
} if (root == null) {
} return false;
}
private Node root;
if (data == [Link]) {
public BinarySearchTree() { return true;
root = null; }
}
if (data < [Link]) {
// Insert a node into the BST return searchRec([Link], data);
public void insert(int data) { }
root = insertRec(root, data);
} return searchRec([Link], data);
}
// Recursive insert function
private Node insertRec(Node root, int data) { // Main method to test the BinarySearchTree class
if (root == null) { public static void main(String[] args) {
root = new Node(data); BinarySearchTree bst = new BinarySearchTree();
return root;
} // Insert values into the BST
[Link](50);
if (data < [Link]) { [Link](30);
[Link] = insertRec([Link], data); [Link](20);
} else if (data > [Link]) { [Link](40);
[Link] = insertRec([Link], data); [Link](70);
} [Link](60);
[Link](80);
return root;
} // Print the inorder traversal (sorted order)
[Link]("Inorder traversal:");
// Inorder Traversal (Left, Root, Right) [Link]();
public void inorder() {
inorderRec(root); // Search for a value in the BST
} [Link]("\nSearch 40: " +
[Link](40));
// Recursive inorder traversal [Link]("Search 25: " + [Link](25));
private void inorderRec(Node root) { }
if (root != null) { }
inorderRec([Link]);
[Link]([Link] + " ");
inorderRec([Link]);
}