Publish Your Article Here

Program: Implement Binary Search Tree (BST) in-order traversal (depth first).


For a binary tree to be a binary search tree (BST), the data of all the nodes in the left sub-tree of the root node should be less than or equals to the data of the root. The data of all the nodes in the right subtree of the root node should be greater than the data of the root. This example shows the implementation of a binary search tree in-order traversal (depth first).

What is in-order traversal (depth first)?

Tree traversal means we visiting all nodes in the tree, visiting means either of accessing node data or processing node data. Traversal can be specified by the order of visiting 3 nodes, ie current node, left subtree and right subtree. In in-order traversal, first we visit the left subtree, then current node and then right subtree. In-order traversal gives data in the sorted order. In our current example we use recursive approach to implement in-order traversal.

Binary Search Tree (in-order traversal)

In-order: A, B, C, D, E, F, G, H, I.

Here is an example picture of binary search tree (BST) for our example code:

Binary Search Tree

Here is the steps to implement in-order traversal:

  1. Start with root node.
  2. Check if the current node is empty / null.
  3. Traverse the left subtree by recursively calling the in-order function.
  4. Display the data part of the root (or current node).
  5. Traverse the right subtree by recursively calling the in-order function.

package com.java2novice.ds;

public class BstNode {

        private BstNode left;
        private BstNode right;
        private Integer data;

        public BstNode(Integer data) {
       = data;

        public BstNode getLeft() {
                return left;
        public void setLeft(BstNode left) {
                this.left = left;
        public BstNode getRight() {
                return right;
        public void setRight(BstNode right) {
                this.right = right;

        public Integer getData() {
                return data;

package com.java2novice.ds;

import java.util.LinkedList;
import java.util.Queue;

public class BinarySearchTreeImpl {

        private BstNode root;

        public boolean isEmpty() {

                return (this.root == null);

        public void insert(Integer data) {

                System.out.print("[input: "+data+"]");
                if(root == null) {
                        this.root = new BstNode(data);
                        System.out.println(" -> inserted: "+data);

                insertNode(this.root, data);
                System.out.print(" -> inserted: "+data);

        private BstNode insertNode(BstNode root, Integer data) {

                BstNode tmpNode = null;
                System.out.print(" ->"+root.getData());
                if(root.getData() >= data) {
                        System.out.print(" [L]");
                        if(root.getLeft() == null) {
                                root.setLeft(new BstNode(data));
                                return root.getLeft();
                        } else {
                                tmpNode = root.getLeft();
                } else {
                        System.out.print(" [R]");
                        if(root.getRight() == null) {
                                root.setRight(new BstNode(data));
                                return root.getRight();
                        } else {
                                tmpNode = root.getRight();

                return insertNode(tmpNode, data);

        public void inOrderTraversal() {

        private void doInOrder(BstNode root) {

                if(root == null) return;
                System.out.print(root.getData()+" ");

        public static void main(String a[]) {

                BinarySearchTreeImpl bst = new BinarySearchTreeImpl();
                System.out.println("In Order Traversal");

[input: 8] -> inserted: 8
[input: 10] ->8 [R] -> inserted: 10
[input: 14] ->8 [R] ->10 [R] -> inserted: 14
[input: 3] ->8 [L] -> inserted: 3
[input: 6] ->8 [L] ->3 [R] -> inserted: 6
[input: 7] ->8 [L] ->3 [R] ->6 [R] -> inserted: 7
[input: 1] ->8 [L] ->3 [L] -> inserted: 1
[input: 4] ->8 [L] ->3 [R] ->6 [L] -> inserted: 4
[input: 13] ->8 [R] ->10 [R] ->14 [L] -> inserted: 13
In Order Traversal
1 3 4 6 7 8 10 13 14
<< Previous Program | Next Program >>

List Of All Interview Programs:

  1. Remove last node of the Linked List
  2. Identify middle element of a Linked List
  3. Identify given LinkedList is a palindrom or not using Stack.
  4. Remove duplicates from sorted linked list
  5. Find Nth node from the end of Linked List
  6. Identify loop/cycle in a LinkedList.
  7. Find length of a loop in a LinkedList.
  8. Detect and remove loop in a LinkedList.
  9. How to reverse Singly Linked List?
  10. Check if given Linked List is a Circular Linked List or not.
  11. Find out duplicate number between 1 to N numbers.
  12. Find out middle index where sum of both ends are equal.
  13. Write a singleton class.
  14. Write a program to create deadlock between two threads.
  15. Write a program to reverse a string using recursive algorithm.
  16. Write a program to reverse a number.
  17. Write a program to convert decimal number to binary format.
  18. Write a program to find perfect number or not.
  19. Write a program to implement ArrayList.
  20. Write a program to find maximum repeated words from a file.
  21. Wrie a program to find out duplicate characters in a string.
  22. Write a program to find top two maximum numbers in a array.
  23. Write a program to sort a map by value.
  24. Write a program to find common elements between two arrays.
  25. How to swap two numbers without using temporary variable?
  26. Write a program to print fibonacci series.
  27. Write a program to find sum of each digit in the given number using recursion.
  28. Write a program to check the given number is a prime number or not?
  29. Write a program to find the given number is Armstrong number or not?
  30. Write a program to convert binary to decimal number.
  31. Write a program to check the given number is binary number or not?
  32. Write a program for Bubble Sort in java.
  33. Write a program for Insertion Sort in java.
  34. Write a program to implement hashcode and equals.
  35. How to get distinct elements from an array by avoiding duplicate elements?
  36. Write a program to get distinct word list from the given file.
  37. Write a program to get a line with max word count from the given file.
  38. Write a program to convert string to number without using Integer.parseInt() method.
  39. Write a program to find two lines with max characters in descending order.
  40. Write a program to find the sum of the first 1000 prime numbers.
  41. Find longest substring without repeating characters.
  42. Write a program to remove duplicates from sorted array.
  43. How to sort a Stack using a temporary Stack?
  44. Write a program to print all permutations of a given string.
  45. Implement Binary Search Tree (BST)
  46. Find min and max value from Binary Search Tree (BST)
  47. Find height of a Binary Search Tree (BST)
  48. Implement Binary Search Tree (BST) Level order traversal (breadth first).
  49. Implement Binary Search Tree (BST) pre-order traversal (depth first).
  50. Implement Binary Search Tree (BST) in-order traversal (depth first).
  51. Implement Binary Search Tree (BST) post-order traversal (depth first).
  52. How to check the given Binary Tree is Binary Search Tree (BST) or not?
  53. How to delete a node from Binary Search Tree (BST)?
  54. Write a program to find common integers between two sorted arrays.
  55. Write a program to find given two trees are mirror or not.
  56. HackerRank stack problem - Find maximum element.
  57. HackerRank stack problem - Balanced Brackets.
  58. HackerRank stack problem - Equal Stacks.
  59. HackerRank stack problem - Game Of Two Stacks.
Knowledge Centre
Class, Constructor and Primitive data types
Class is a template for multiple objects with similar features and it is a blue print for objects. It defines a type of object according to the data the object can hold and the operations the object can perform. Constructor is a special kind of method that determines how an object is initialized when created. Primitive data types are 8 types and they are: byte, short, int, long, float, double, boolean, char.
Famous Quotations
Tomorrow is often the busiest day of the week.
-- Spanish Proverb

About Author

I'm Nataraja Gootooru, programmer by profession and passionate about technologies. All examples given here are as simple as possible to help beginners. The source code is compiled and tested in my dev environment.

If you come across any mistakes or bugs, please email me to [email protected].

Most Visited Pages

Other Interesting Sites

Reference: Java™ Platform Standard Ed. 7 - API Specification | Java™ Platform Standard Ed. 8 - API Specification | Java is registered trademark of Oracle.
Privacy Policy | Copyright © 2024 by Nataraja Gootooru. All Rights Reserved.