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