Tree class. : Your Tree « 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








9.8.Your Tree
9.8.1.Tree class.