 <p>You can print "test->data" correctly because that's an int. The issue is that "test->left" and "test->right" are pointers, and pointers are basically numbers that refer to where another object is stored.</p> <p>If you wanted to print the left node's data, you'd have to do this:</p> <pre><code>cout &lt;&lt; "left: " &lt;&lt; test-&gt;left-&gt;data &lt;&lt; endl; </code></pre> <p>And then you'd have to do the same for the right node.</p>