This blog will soon be merged with

JavaByPatel

which explains each solution in detail, to visit new blog, click JavaByPatel

Wednesday, 24 December 2014

Print Nodes Of Last Level Of BinaryTree

package tree;

public class Node{
 
 private Node left;
 private Node right;
 private int data;
 
 public Node(int data){
  this.data=data;
 }

 public Node getLeft() {
  return left;
 }

 public void setLeft(Node left) {
  this.left = left;
 }

 public Node getRight() {
  return right;
 }

 public void setRight(Node right) {
  this.right = right;
 }

 public int getData() {
  return data;
 }

 public void setData(int data) {
  this.data = data;
 }
}

package tree;

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

public class PrintNodesOfLastLevelOfBinaryTree {
 private Node rootNode;

 public static void main(String[] args) {
  new PrintNodesOfLastLevelOfBinaryTree();
 }

 public PrintNodesOfLastLevelOfBinaryTree(){

  addNode(rootNode, 50); 
  addNode(rootNode, 40); 
  addNode(rootNode, 60); 
  addNode(rootNode, 30); 
  addNode(rootNode, 45); 
  addNode(rootNode, 55); 
  addNode(rootNode, 70); 
  addNode(rootNode, 52); 
  addNode(rootNode, 58); 

  printTreeInOrder(rootNode);
  System.out.println();
  calculateAndPrintNodesAtEachLevelAnotherWay(rootNode);
 }

 private String calculateAndPrintNodesAtEachLevelAnotherWay(Node rootNode) {
  if(rootNode==null)
   return "";
  Queue<Node> q1 = new LinkedList<Node>();
  Queue<Node> q2 = new LinkedList<Node>();
  q1.add(rootNode);

  String str="";
  while(!q1.isEmpty()){

   Node temp = q1.poll();
   str+=temp.getData()+",";
   if(temp.getLeft()!=null){
    q2.add(temp.getLeft());
   }
   if(temp.getRight()!=null){
    q2.add(temp.getRight()); 
   }
   if(q1.isEmpty()){
    if(!q2.isEmpty()){
     //System.out.println(str);
     str="";
     q1=q2;
     q2=new LinkedList<Node>(); 
    }
   }
  }
  System.out.println(str);
  return null;
 }

 private void printTreeInOrder(Node rootNode){
  if(rootNode==null)
   return;
  printTreeInOrder(rootNode.getLeft());
  System.out.print(rootNode.getData() + " ");
  printTreeInOrder(rootNode.getRight());
 }

 private void addNode(Node rootNode, int data){
  if(rootNode==null){
   Node temp1 = new Node(data);
   this.rootNode=temp1;
  }else{
   addNodeInProperPlace(rootNode, data);
  }
 }

 private void addNodeInProperPlace(Node rootNode, int data){ 
  if(data>rootNode.getData()){
   if(rootNode.getRight()!=null){
    addNode(rootNode.getRight(), data);
   }else{
    Node temp1 = new Node(data);
    rootNode.setRight(temp1);
   }
  }else if(data<rootNode.getData()){
   if(rootNode.getLeft()!=null){
    addNode(rootNode.getLeft(), data);
   }else{
    Node temp1 = new Node(data);
    rootNode.setLeft(temp1);
   }
  }
 }
}

No comments:

Post a Comment