bst generics

PHOTO EMBED

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
    }
}
content_copyCOPY