public void reverseLevelOrderTraversal(Node root){
        if(root == null){
            return;
        }
        Queue<Node> q = new LinkedList<>();
        Stack<Node> s = new Stack<>();
        
        q.offer(root);
        while(!q.isEmpty()){
            root = q.poll();
            if(root.right != null){
                q.offer(root.right);
            }
            if(root.left != null){
                q.offer(root.left);
            }
            s.push(root);
        }
        while(!s.isEmpty()){
            System.out.print(s.pop().data + " ");
        }
    }
Date 04/20/2015
@author tusroy

Video link - https://youtu.be/D2bIbWGgvzI

Given a binary tree print its level order traversal in reverse
e.g           1
         2         3
       4    5    6   7

Output should be 4 5 6 7 2 3 1

Solution
Maintain a stack and queue. Do regular level order traversal but
put right first in the queue. Instead of printing put the result
in stack. Finally print contents of the stack.

Time and space complexity is O(n)

References : http://www.geeksforgeeks.org/reverse-level-order-traversal/
src/com/interview/tree/LevelOrderTraversalInReverse.java