class TreeNode: def __init__(self, data, parent=None, left = None, right = None): self.data = data self.left = left self.right = right self.parent = parent def __repr__(self): return '%s[%s](%s, %s)' % (self, self.parent, repr(self.left), repr(self.right)) def __str__(self): return self.data class Tree: def __init__(self, root = None): self.root = root def __repr__(self): return '%s(%s, %s)' % ( self.root, repr(self.root.left), repr(self.root.right) ) # Make some tree nodes a = TreeNode('A') b = TreeNode('B') c = TreeNode('C') d = TreeNode('D') # Build tree structure a.left = b a.right = c b.left = d c.parent= a b.parent= a d.parent= b # Assign root node t = Tree(a) print repr(t) # A # / \ # B C # / / \ # D E F # \ # G