'Return a list of all tree positions that can be used to reach
this multi-parented tree starting from ``root``.  I.e., the
following is always true::
for treepos in ptree.treepositions(root):
root[treepos] is ptree'

def treepositions(self, root):

    if (self is root):
        return [()]
    else:
        return [(treepos + (index,)) for parent in self._parents for treepos in parent.treepositions(root) for (index, child) in enumerate(parent) if (child is self)]
