title: Print binary tree in level order using only one extra pointer per node
body: <p>Given a binary tree whose nodes have the following type:</p>
  
  <pre class="lang-cpp prettyprint-override"><code>struct Node {
    Node* left;
    Node* right;
    int data;
    Node* foo;   // uninitialized - use it any way you like
  };
  </code></pre>
  
  <p>Print the tree data in level order and leave the <code>foo</code> member of each node pointing to the next sibling node.</p>
  
  <p>We are not allowed to use any other storage except a constant number of variables with non-array type (in particular, an external queue is not allowed).</p>