To print binary Tree Spirally and Inwards:
/*
http://www.careercup.com/question?id=5749172554694656
*/
public void printSpiralInwards(Node root){
Map<Integer,ArrayList<Node>> mp = new HashMap<Integer, ArrayList<Node>>();
ArrayList<Node> arrayList = null;
ArrayList<Node> arrayList1 = null;
int i = 0;
if(root == null)
return;
Deque<Node> queue = new LinkedList<Node>();
queue.add(root);
queue.add(null);
while(queue.size()>1){
Node temp = queue.peekFirst();
arrayList = new ArrayList<Node>();
while(temp!=null){
temp = queue.pollFirst();
arrayList.add(temp);
System.out.println(" "+ temp.data );
if(temp.left!=null)
queue.offerLast(temp.left);
if(temp.right!=null)
queue.offerLast(temp.right);
temp = queue.peekFirst();
}
mp.put(i++, arrayList);
temp = queue.peekLast();
arrayList1 = new ArrayList<Node>();
while(temp!=null){
temp = queue.pollLast();
arrayList1.add(temp);
System.out.println(" "+ temp.data );
if(temp.right!=null)
queue.offerFirst(temp.right);
if(temp.left!=null)
queue.offerFirst(temp.left);
temp = queue.peekLast();
}
mp.put(i++, arrayList1);
}
Deque<ArrayList<Node>> de = new LinkedList<ArrayList<Node>>();
de.addAll(mp.values());
while(!de.isEmpty()){
System.out.println(" ");
ArrayList<Node> first = de.pollFirst();
Iterator<Node> itr = first.iterator();
while(itr.hasNext()){
System.out.print(" "+itr.next().data);
}
System.out.println(" ");
ArrayList<Node> sec = de.pollLast();
Iterator<Node> itr1 = sec.iterator();
while(itr1.hasNext()){
System.out.print(" "+itr1.next().data);
}
}
}
Find Maximum in a Binary Tree(NOT BST)
int findMax(Node node) {int max = Integer.MIN_VALUE;
Queue<Node> queue = new LinkedList<Node>();
queue.add(node);
if (root == null)
return 0;
else {
while (!queue.isEmpty()) {
Node temp = queue.poll();
if (max < temp.tData)
max = temp.tData;
if (temp.lefNode != null)
queue.add(temp.lefNode);
if (temp.rightNode != null)
queue.add(temp.rightNode);
}
return max;
}
}
No comments:
Post a Comment