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