private static void printZigzag(Node root) {

        LinkedList<Node> queue = new LinkedList();
        Stack<Node> stack = new Stack();

        if (root == null)
            return;

        Node marker = new Node(-1);
        boolean printOrder = true;
        queue.add(root);
        queue.add(marker);

        while (!queue.isEmpty()){
            Node node = queue.poll();
            if (node == marker){
                if(!printOrder){
                    while (stack.size() > 0){
                        Node printNode = stack.pop();
                        System.out.println(printNode.value);
                    }
                }

                printOrder = !printOrder;
                if (!queue.isEmpty())
                    queue.add(marker);
                continue;
            }
            if (printOrder){
                System.out.println(node.value);
            } else {
                stack.push(node);
            }

            if(node.left != null)
                queue.add(node.left);
            if(node.right != null)
                queue.add(node.right);
        }

    }