public class TreeSort {
public static void main(String[] args) {
int arr[] = {5, 4, 7, 2, 11,14,12,1};
System.out.println("printing the array");
printArray(arr);
Tree tree = new Tree();;
//Build the Tree
for(int i = 0; i<arr.length;i++){
tree.insert(arr[i]);
}
System.out.println("built the binary tree");
tree.inOrderTraverse(tree.root);
}
static void printArray(int arr[])
{
int n = arr.length;
for (int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
}
}
class Tree {
TreeNode root = null;
public void insert(int item){
if(root == null){
root = new TreeNode(item);
} else {
insertAsChild(item,root);
}
}
public void inOrderTraverse(TreeNode node){
if(node.getLeft()!=null)
inOrderTraverse(node.getLeft());
if(node!=null)
System.out.print(node.getKey()+" ");
if(node.getRight()!=null)
inOrderTraverse(node.getRight());
}
private void insertAsChild(int item, TreeNode node){
System.out.println("insertAsChild::"+item);
if(node.getKey()>item){
//insert to left child
if(node.getLeft()==null){
node.setLeft(new TreeNode(item));
} else {
insertAsChild(item, node.getLeft());
}
} else {
//insert to right child
if(node.getRight()==null){
node.setRight(new TreeNode(item));
} else {
insertAsChild(item, node.getRight());
}
}
}
}
class TreeNode {
int key;
TreeNode left, right;
public TreeNode(int item){
key = item;
left = right = null;
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
Output :
printing the array 5 4 7 2 11 14 12 1 insertAsChild::4 insertAsChild::7 insertAsChild::2 insertAsChild::2 insertAsChild::11 insertAsChild::11 insertAsChild::14 insertAsChild::14 insertAsChild::14 insertAsChild::12 insertAsChild::12 insertAsChild::12 insertAsChild::12 insertAsChild::1 insertAsChild::1 insertAsChild::1 built the binary tree 1 2 4 5 7 11 12 14