Friday, July 3, 2015

Binary Tree

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;
}
}




Generate the Mirror of a Binary Tree:

public void getMirrorOfTree(Node1 node) { Node1 temp; if (node != null) { getMirrorOfTree(node.lefNode1); getMirrorOfTree(node.rightNode1); temp = node.lefNode1; node.lefNode1 = node.rightNode1; node.rightNode1 = temp; } }

To Find Ancestors of a Node:

public boolean ancestorsOfNode(Node1 node, int nData) { if (node == null) return false; if (node.tData == nData) return true; if (ancestorsOfNode(node.lefNode1, nData) || ancestorsOfNode(node.rightNode1, nData)) { System.out.println(" -- " + node.tData); return true; } return false; }

No comments:

Post a Comment