После того, как это исправить, кажется, все работает хорошо.

т, я пытаюсь восстановить двоичное дерево, я почти получил его, за исключением того, что он выдает ошибку, и я не знаю, почему

buildTree :: (Ord a, Eq a) => [a] -> [a] -> Tree a
buildTree [] [] = Empty
buildTree preOrd inOrd = Node root left right 
where root  = head preOrd
      left = buildTree leftPreOrd leftInOrd
      right = buildTree rigthPreOrd leftInOrd

      Just rootInd = elemIndex root inOrd
      leftPreOrd   = tail (take (rootInd + 1) preOrd)
      rigthPreOrd  = tail (drop rootInd preOrd)

      leftInOrd    = take rootInd inOrd
      rightInord   = drop (rootInd + 1) inOrd

Когда я звоню с помощью

buildTree [10,5,2,6,14,12,15] [2,5,6,10,12,14,15]

это бросает меня это:

Exception: reconstruir.hs:26:11-45: Irrefutable pattern failed for pattern Just rootInd

Ответы на вопрос(2)

Ваш ответ на вопрос