DFS in a binary tree
This code is pretty much the most efficient it can be, so I will add some pointers on the coding style and convention.


Instead of calling your Binary Search Tree class a BST, define it as

class BinarySearchTree(object):
    # remainder of your code


Gives more meaning to the class name.
The preorder traversal is called like t.preorder(t.root). But wait, t already has the root node in it, so it would be much more readable if we could do t.preorder(). So modify the signature to:

def preorder(self, root=None):
    if root is None:
        root = self.root
    # remainder of your code



Same should be done for t.inorder() and t.postorder() as well.


Spaces: You need a space between your arguments, as recommended by PEP-0008. So do def inorder(self, root): instead of def inorder(self,root):. This goes for the inorder and postorder as well
Using root as the argument name is misleading - its better to call it as node, which has the default value of self.root. This is cleaner, since in the DFS, you would traverse all the nodes of the tree.

def preorder(self, node=None):
    # replace root with node in your code


Same should be done for inorder and postorder as well.
Comments and indentation: Your comments are currently not indented right. Instead of having

    def inorder(self,root):
## left, root, right


Try defing them in the form of docstrings

def inorder(self,root):
    """traversal order: left child node, current node, right child node"""
    # remainder of your code