0105: Construct Binary Tree from Preorder and Inorder Traversal

class Solution:
    def buildTree(self, preorder, inorder):
	    
        def rec(po, io):
            if not po:
                return None
            ix = io.index(po[0])
            return TreeNode(
                po[0],
                rec(po[1:1+ix], io[0:ix]),
                rec(po[1+ix:], io[1+ix:])
            )
        
        return rec(preorder, inorder)