bst generics
Sat Jun 08 2024 05:23:53 GMT+0000 (Coordinated Universal Time)
Saved by @signup
import java.util.ArrayList; import java.util.List; class TreeNode<T extends Comparable<T>> { T value; TreeNode<T> left; TreeNode<T> right; TreeNode(T value) { this.value = value; left = null; right = null; } } public class BinarySearchTree<T extends Comparable<T>> { private TreeNode<T> root; // Method to insert a new value in the BST public void insert(T value) { root = insertRec(root, value); } private TreeNode<T> insertRec(TreeNode<T> root, T value) { if (root == null) { root = new TreeNode<>(value); return root; } if (value.compareTo(root.value) < 0) { root.left = insertRec(root.left, value); } else if (value.compareTo(root.value) > 0) { root.right = insertRec(root.right, value); } return root; } // Method for inorder traversal public void inorder() { List<T> result = new ArrayList<>(); inorderRec(root, result); System.out.println("Inorder: " + result); } private void inorderRec(TreeNode<T> root, List<T> result) { if (root != null) { inorderRec(root.left, result); result.add(root.value); inorderRec(root.right, result); } } // Method for preorder traversal public void preorder() { List<T> result = new ArrayList<>(); preorderRec(root, result); System.out.println("Preorder: " + result); } private void preorderRec(TreeNode<T> root, List<T> result) { if (root != null) { result.add(root.value); preorderRec(root.left, result); preorderRec(root.right, result); } } // Method for postorder traversal public void postorder() { List<T> result = new ArrayList<>(); postorderRec(root, result); System.out.println("Postorder: " + result); } private void postorderRec(TreeNode<T> root, List<T> result) { if (root != null) { postorderRec(root.left, result); postorderRec(root.right, result); result.add(root.value); } } // Main method to test the BST public static void main(String[] args) { BinarySearchTree<Integer> bst = new BinarySearchTree<>(); bst.insert(50); bst.insert(30); bst.insert(20); bst.insert(40); bst.insert(70); bst.insert(60); bst.insert(80); bst.inorder(); // Inorder traversal bst.preorder(); // Preorder traversal bst.postorder(); // Postorder traversal } }
Comments