Table of Contents
Define the Node Class
Create the BST Class
Implement Insertion Logic
Add Search Functionality
Optional: Add Traversal Methods
Home Java javaTutorial Implement a binary search tree in Java

Implement a binary search tree in Java

Jul 11, 2025 am 12:08 AM
java binary search tree

To implement the binary search tree (BST) in Java, first define the node class, then create the BST class management tree structure, and then implement the insertion and search logic. 1. Define the Node class, including values ​​and left and right child nodes; 2. Create the BinarySearchTree class and set the root node; 3. Implement the insert method, find the correct position through recursion and insert a new node; 4. Add a search method to find the target value recursively according to the size comparison; 5. Optionally implement inorder and other traversal methods to verify the tree structure. The above steps constitute a BST with basic insertion, search and traversal functions.

Implement a binary search tree in Java

Implementing a binary search tree (BST) in Java isn't too bad once you understand the structure and logic behind it. The key idea is that each node has at most two children, with the left child being smaller than the parent and the right child being larger.

Implement a binary search tree in Java

Let's walk through how to build a basic BST in Java — from defining the node class to inserting values ​​and searching for them.


Define the Node Class

Every node in a BST holds a value and references to its left and right children. So first, we need a Node class:

Implement a binary search tree in Java
 class Node {
    int value;
    Node left, right;

    public Node(int item) {
        value = item;
        left = right = null;
    }
}

This is straightforward — just an integer value and two points. You can make this more flexible by using generics if you want to support other data types later.


Create the BST Class

Next, create a class to manage the tree. It usually starts with a root node:

Implement a binary search tree in Java
 class BinarySearchTree {
    Node root;

    public BinarySearchTree() {
        root = null;
    }

    // Methods will go here
}

This class will hold all the operations like insert, search, delete, etc.


Implement Insertion Logic

Inserting into a BST follows a simple rule: smaller values ​​go to the left, bigger ones to the right.

Here's how the insert method works:

  • If the tree is empty, create a new node as the root.
  • Otherwise, traverse the tree to find the correct spot.

Here's what the code looks like:

 void insert(int value) {
    root = insertRec(root, value);
}

Node insertRec(Node root, int value) {
    if (root == null) {
        root = new Node(value);
        return root;
    }

    if (value < root.value)
        root.left = insertRec(root.left, value);
    else if (value > root.value)
        root.right = insertRec(root.right, value);

    return root;
}

A few things to note:

  • This uses recursion to find the right place to insert.
  • Duplicates are typically not allowed in a standard BST, so we skip equal values ​​here.
  • You could also write this iteratively if you prefer loops over recursion.

Add Search Functionality

Searching follows the same logic as insertion — compare values ​​and move left or right accordingly.

Here's a simple recursive search method:

 boolean search(int value) {
    return searchRec(root, value);
}

boolean searchRec(Node root, int value) {
    if (root == null)
        return false;

    if (root.value == value)
        return true;

    return value < root.value
           ? searchRec(root.left, value)
           : searchRec(root.right, value);
}

This returns true if the value is found, false otherwise.

If you're working on a more advanced version, you might also want to return the actual node instead of a boolean.


Optional: Add Traversal Methods

To see your tree in action, implement traversal methods like inorder, preorder, or postorder. Inorder traversal gives values ​​in sorted order — which is handy for testing.

Here's an example of inorder traversal:

 void inorder() {
    inorderRec(root);
}

void inorderRec(Node root) {
    if (root != null) {
        inorderRec(root.left);
        System.out.print(root.value " ");
        inorderRec(root.right);
    }
}

This helps visualize the structure and verify that insertion works correctly.


At this point, you have a working binary search tree with insert, search, and traversal capabilities. There's more you can do — like deletion or balancing — but those are next steps. For many use cases, especially learning or small applications, this setup is perfectly fine.

Basically that's it.

The above is the detailed content of Implement a binary search tree in Java. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Building RESTful APIs in Java with Jakarta EE Building RESTful APIs in Java with Jakarta EE Jul 30, 2025 am 03:05 AM

SetupaMaven/GradleprojectwithJAX-RSdependencieslikeJersey;2.CreateaRESTresourceusingannotationssuchas@Pathand@GET;3.ConfiguretheapplicationviaApplicationsubclassorweb.xml;4.AddJacksonforJSONbindingbyincludingjersey-media-json-jackson;5.DeploytoaJakar

A Developer's Guide to Maven for Java Project Management A Developer's Guide to Maven for Java Project Management Jul 30, 2025 am 02:41 AM

Maven is a standard tool for Java project management and construction. The answer lies in the fact that it uses pom.xml to standardize project structure, dependency management, construction lifecycle automation and plug-in extensions; 1. Use pom.xml to define groupId, artifactId, version and dependencies; 2. Master core commands such as mvnclean, compile, test, package, install and deploy; 3. Use dependencyManagement and exclusions to manage dependency versions and conflicts; 4. Organize large applications through multi-module project structure and are managed uniformly by the parent POM; 5.

css dark mode toggle example css dark mode toggle example Jul 30, 2025 am 05:28 AM

First, use JavaScript to obtain the user system preferences and locally stored theme settings, and initialize the page theme; 1. The HTML structure contains a button to trigger topic switching; 2. CSS uses: root to define bright theme variables, .dark-mode class defines dark theme variables, and applies these variables through var(); 3. JavaScript detects prefers-color-scheme and reads localStorage to determine the initial theme; 4. Switch the dark-mode class on the html element when clicking the button, and saves the current state to localStorage; 5. All color changes are accompanied by 0.3 seconds transition animation to enhance the user

python parse date string example python parse date string example Jul 30, 2025 am 03:32 AM

Use datetime.strptime() to convert date strings into datetime object. 1. Basic usage: parse "2023-10-05" as datetime object through "%Y-%m-%d"; 2. Supports multiple formats such as "%m/%d/%Y" to parse American dates, "%d/%m/%Y" to parse British dates, "%b%d,%Y%I:%M%p" to parse time with AM/PM; 3. Use dateutil.parser.parse() to automatically infer unknown formats; 4. Use .d

How to use Java MessageDigest for hashing (MD5, SHA-256)? How to use Java MessageDigest for hashing (MD5, SHA-256)? Jul 30, 2025 am 02:58 AM

To generate hash values using Java, it can be implemented through the MessageDigest class. 1. Get an instance of the specified algorithm, such as MD5 or SHA-256; 2. Call the .update() method to pass in the data to be encrypted; 3. Call the .digest() method to obtain a hash byte array; 4. Convert the byte array into a hexadecimal string for reading; for inputs such as large files, read in chunks and call .update() multiple times; it is recommended to use SHA-256 instead of MD5 or SHA-1 to ensure security.

VSCode settings.json location VSCode settings.json location Aug 01, 2025 am 06:12 AM

The settings.json file is located in the user-level or workspace-level path and is used to customize VSCode settings. 1. User-level path: Windows is C:\Users\\AppData\Roaming\Code\User\settings.json, macOS is /Users//Library/ApplicationSupport/Code/User/settings.json, Linux is /home//.config/Code/User/settings.json; 2. Workspace-level path: .vscode/settings in the project root directory

css dropdown menu example css dropdown menu example Jul 30, 2025 am 05:36 AM

Yes, a common CSS drop-down menu can be implemented through pure HTML and CSS without JavaScript. 1. Use nested ul and li to build a menu structure; 2. Use the:hover pseudo-class to control the display and hiding of pull-down content; 3. Set position:relative for parent li, and the submenu is positioned using position:absolute; 4. The submenu defaults to display:none, which becomes display:block when hovered; 5. Multi-level pull-down can be achieved through nesting, combined with transition, and add fade-in animations, and adapted to mobile terminals with media queries. The entire solution is simple and does not require JavaScript support, which is suitable for large

Sublime Text auto close HTML tags Sublime Text auto close HTML tags Jul 30, 2025 am 02:41 AM

Installing the Emmet plug-in can achieve intelligent automatic closing of tags and support abbreviation syntax; 2. Enable "auto_match_enabled":true to allow Sublime to automatically complete simple tags; 3. Use Alt . (Win) or Ctrl Shift . (Mac) shortcut keys to manually close the current tag - it is recommended to use Emmet in daily life. The latter two methods can be combined, which is efficient and simple to set.

See all articles