public void postOrderItrOneStack(Node root){
        Node current = root;
        Deque<Node> stack = new LinkedList<>();
        while(current != null || !stack.isEmpty()){
            if(current != null){
                stack.addFirst(current);
                current = current.left;
            }else{
                Node temp = stack.peek().right;
                if (temp == null) {
                    temp = stack.poll();
                    System.out.print(temp.data + " ");
                    while (!stack.isEmpty() && temp == stack.peek().right) {
                        temp = stack.poll();
                        System.out.print(temp.data + " ");
                    }
                } else {
                    current = temp;
                }
            }
        }
    }
Youtube link - https://youtu.be/nzmtCFNae9k
Youtube link - https://youtu.be/elQcrJrfObg
Youtube link - https://youtu.be/qT65HltK2uE
Youtube link - https://youtu.be/ZM-sV9zQPEs

http://www.geeksforgeeks.org/inorder-tree-traversal-without-recursion/
http://www.geeksforgeeks.org/inorder-tree-traversal-without-recursion-and-without-stack/
http://www.geeksforgeeks.org/iterative-preorder-traversal/
src/com/interview/tree/TreeTraversals.java