code: def buildTreeUtil(
      self, preorder, inorder, inOrderMap, pStart, pEnd, iStart, iEnd
  ):
      if pStart > pEnd or iStart > iEnd:
          return None
      root = TreeNode(preorder[pStart])
      rootIdx = inOrderMap[root.val]
      root.left = self.buildTreeUtil(
          preorder,
          inorder,
          inOrderMap,
          pStart + 1,
          pStart + rootIdx - iStart + 1,
          iStart,
          rootIdx - 1,
      )
      root.right = self.buildTreeUtil(
          preorder,
          inorder,
          inOrderMap,
          pStart + rootIdx - iStart + 1,
          pEnd,
          rootIdx + 1,
          iEnd,
      )
      return root
  
label_desc: Use image node_id 2 for calling the Solution obj's underlying member method code with example usage: obj.buildTreeUtil(preorder, inorder, inOrderMap, pStart, pEnd, iStart, iEnd) and returns: root, None