title: Print a binary tree, python, in inorder
body: <p>Me and my friend are doing some school work with programming in Python 3.1 and are VERY stuck. We're programming a binary tree and it's working fine except when we want to print all the nodes in inorder in a way that would create a sentence (all the words in inorder just after one another in a row). We have been looking all over the internet for clues as to how to procede and we've been working with this little thing for like two hours. Any advice/help would be awesome.  </p>
  
  <p>Our program/Binary tree:</p>
  
  <pre><code>class Treenode:  
      def __init__(self, it = None, le = None, ri = None):  
          self.item = it  
          self.left = le  
          self.right = ri  
  
  class Bintree:  
      def __init__(self):  
          self.item = None  
          self.left = None  
          self.right = None  
  
      def put(self, it = None):
          key = Treenode(it)
          if self.item == None:
              self.item = key
              return
          p = self.item
          while True:
              if key.item &lt; p.item:
                  if p.left == None:
                      p.left = key
                      return
                  else:
                      p = p.left
              elif key.item &gt; p.item:
                  if p.right == None:
                      p.right = key
                      return
                  else:
                      p = p.right
              else:
                  return
  
      def exists(self, it):
          key = it
          p = self.item
          if p == key:
              return True
          while True:
              if key &lt; p.item:
                  if p.left == None:
                      return False
                  else:
                      p = p.left
              elif key &gt; p.item:
                  if p.right == None:
                      return False
                  else:
                      p = p.right
              else:
                  return
  
      def isEmpty(self):
          if self.item == None:
              return True
          else:
              return False
  
  def printtree (Treenode):
      if Treenode.left != None:
          printtree (Treenode.left)
      print (Treenode.item)
      if Treenode.right != None:
          printtree (Treenode.right)
  </code></pre>
  
  <p>We get a sort of print when we run the program which looks like this: "bintree.Treenode object at 0x02774CB0", which is not what we want.</p>
  
  <p>We use the tree by running this:</p>
  
  <pre><code>import bintree
  
  tree = bintree.Bintree()
  print(tree.isEmpty())    # should give True
  tree.put("solen")
  print(tree.isEmpty())    # should give False
  tree.put("gott")
  tree.put("sin")
  tree.put("hela")
  tree.put("ban")
  tree.put("upp")
  tree.put("himlarunden")
  tree.put("manen")
  tree.put("seglar")
  tree.put("som")
  tree.put("en")
  tree.put("svan")
  tree.put("uti")
  tree.put("midnattsstuden")
  
  print(tree.exists("visa"))     # should give False
  print(tree.exists("ban"))      # should give True
  tree.printtree()               # print sorted
  </code></pre>
  
  <p>Also, the second last row gives us "None" instead of "True", which is wierd.</p>