Collections Python Tutorial

class Treenode:
   def __init__( self, data ):
      self._left = None
      self._data = data
      self._right = None
   def __str__( self ):
      return str( self._data )      
class Tree:
   def __init__( self ):
      self._rootNode = None
        
   def insertNode( self, value ):
      if self._rootNode is None:  
         self._rootNode = Treenode( value )
      else: 
         self.insertNodeHelper( self._rootNode, value )
   def insertNodeHelper( self, node, value ):
      if value < node._data: 
         if node._left is None:
            node._left = Treenode( value )
         else:
            self.insertNodeHelper ( node._left, value )
      elif value > node._data:
         if node._right is None: 
            node._right = Treenode( value )
         else:
            self.insertNodeHelper( node._right, value )
      else: 
         print value, "duplicate"
   def preOrderTraversal( self ):
      self.preOrderHelper( self._rootNode )
   def preOrderHelper( self, node ):
      if node is not None:
         print node,
         self.preOrderHelper( node._left )
         self.preOrderHelper( node._right )
   def inOrderTraversal( self ):
      self.inOrderHelper( self._rootNode )
   def inOrderHelper( self, node ):
      if node is not None:
         self.inOrderHelper( node._left )
         print node,
         self.inOrderHelper( node._right )
   def postOrderTraversal( self ):
      self.postOrderHelper( self._rootNode )
   def postOrderHelper( self, node ):
      if node is not None:
         self.postOrderHelper( node._left )
         self.postOrderHelper( node._right )
         print node,
         
tree = Tree()
values = "1 2 3 4 5 6 7 8 9 0 10"
for i in values.split():
   tree.insertNode( int( i ) )
tree.preOrderTraversal()
print
tree.inOrderTraversal()
print
tree.postOrderTraversal()
print