private void populateMap(Node root, Map<Integer,List<Node>> map,int level){
        if(root == null){
            return;
        }
        List<Node> listNodes = null;
        if(map.containsKey(level)){
            listNodes = map.get(level);
        }else{
            listNodes = new ArrayList<Node>();
            map.put(level, listNodes);
        }
        listNodes.add(root);
        populateMap(root.left,map,level-1);
        populateMap(root.right,map,level+1);
    }
http://www.geeksforgeeks.org/print-binary-tree-vertical-order-set-2/
src/com/interview/tree/VerticalTreePrinting.java