

Program: Implement Binary Search Tree (BST) Level order traversal (breadth first).
Description: 
For a binary tree to be a binary search tree (BST), the data of all the nodes in the left subtree 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 level order traversal (breadth first).
What is Level order traversal (breadth first)?
In Level order traversal, we visit every node on a level before going to a lower level from
left to right. This is also known as Breadth first traversal as the search tree is broadened as much as possible on each depth
before going to the next depth. Below picture shows the level order traversal.
Here is an example picture of binary search tree (BST) for our example code:
Here is the steps to implement Level order traversal:
 Since we have to traverse in same level until we cover all nodes in the same level, it is hard to keep the node references, we
will maintain a queue for storing all discovered nodes.
 Initially the queue will be empty.
 If the root node is not null, push it to the queue.
 Use a while loop to visit all nodes in the queue until the queue is empty.
 Inside while loop, pop out the node.
 Add the left node to the queue if it is not null.
 Add the right node to the queue if it is not null.
 Read the node data and display it.
 Repeat from step 5, until the queue is empty.

BstNode 
package com.java2novice.ds;
public class BstNode {
private BstNode left;
private BstNode right;
private Integer data;
public BstNode(Integer data) {
this.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;
}
}

BinarySearchTreeImpl 
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);
return;
}
insertNode(this.root, data);
System.out.print(" > inserted: "+data);
System.out.println();
}
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 levelOrderTraversal() {
Queue<BstNode> discovedNodeQueue = new LinkedList<>();
if(this.root == null) {
System.out.println("The tree is empty.");
return;
}
discovedNodeQueue.add(this.root);
while (!discovedNodeQueue.isEmpty()) {
BstNode tmpNode = discovedNodeQueue.remove();
if(tmpNode.getLeft() != null) { discovedNodeQueue.add(tmpNode.getLeft()); }
if(tmpNode.getRight() != null) { discovedNodeQueue.add(tmpNode.getRight()); }
System.out.print(tmpNode.getData()+" ");
}
}
public static void main(String a[]) {
BinarySearchTreeImpl bst = new BinarySearchTreeImpl();
bst.insert(8);
bst.insert(10);
bst.insert(14);
bst.insert(3);
bst.insert(6);
bst.insert(7);
bst.insert(1);
bst.insert(4);
bst.insert(13);
System.out.println("");
System.out.println("Level order traversal");
bst.levelOrderTraversal();
}
}


Output: 
[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

Level order traversal
8 3 10 1 6 14 4 7 13





List Of All Interview Programs: How to reverse Singly Linked List?
 Find out duplicate number between 1 to N numbers.
 Find out middle index where sum of both ends are equal.
 Write a singleton class.
 Write a program to create deadlock between two threads.
 Write a program to reverse a string using recursive algorithm.
 Write a program to reverse a number.
 Write a program to convert decimal number to binary format.
 Write a program to find perfect number or not.
 Write a program to implement ArrayList.
 Write a program to find maximum repeated words from a file.
 Wrie a program to find out duplicate characters in a string.
 Write a program to find top two maximum numbers in a array.
 Write a program to sort a map by value.
 Write a program to find common elements between two arrays.
 How to swap two numbers without using temporary variable?
 Write a program to print fibonacci series.
 Write a program to find sum of each digit in the given number using recursion.
 Write a program to check the given number is a prime number or not?
 Write a program to find the given number is Armstrong number or not?
 Write a program to convert binary to decimal number.
 Write a program to check the given number is binary number or not?
 Write a program for Bubble Sort in java.
 Write a program for Insertion Sort in java.
 Write a program to implement hashcode and equals.
 How to get distinct elements from an array by avoiding duplicate elements?
 Write a program to get distinct word list from the given file.
 Write a program to get a line with max word count from the given file.
 Write a program to convert string to number without using Integer.parseInt() method.
 Write a program to find two lines with max characters in descending order.
 Write a program to find the sum of the first 1000 prime numbers.
 Find longest substring without repeating characters.
 Write a program to remove duplicates from sorted array.
 How to sort a Stack using a temporary Stack?
 Write a program to print all permutations of a given string.
 Implement Binary Search Tree (BST)
 Find min and max value from Binary Search Tree (BST)
 Find height of a Binary Search Tree (BST)
 Implement Binary Search Tree (BST) Level order traversal (breadth first).
 Implement Binary Search Tree (BST) preorder traversal (depth first).
 Implement Binary Search Tree (BST) inorder traversal (depth first).
 Implement Binary Search Tree (BST) postorder traversal (depth first).
 How to check the given Binary Tree is Binary Search Tree (BST) or not?
 How to delete a node from Binary Search Tree (BST)?
 Write a program to find common integers between two sorted arrays.
 Write a program to find given two trees are mirror or not.
 HackerRank stack problem  Find maximum element.



What is wrapper class?
Everything in java is an object, except primitives. Primitives are
int, short, long, boolean, etc. Since they are not objects, they cannot
return as objects, and collection of objects. To support this, java provides
wrapper classes to move primitives to objects. Some of the wrapper classes
are Integer, Long, Boolean, etc.
I donâ€™t know the key to success, but the key to failure is trying to please everybody.
 Bill Cosby
