首页 > 解决方案 > 如何将二叉树的字符串表示读回树中?

问题描述

我有以下代码接受输入作为给出的示例ex并创建一个具有给定类型的树:

data QA = Leaf String | Question QA String QA

ex :: QA
ex = (Question 
       (Question (Leaf "Marie Curie") "Is she a scientist?" (Leaf "Queen Elisabeth II"))
       "Is she from Europe?"
       (Question (Leaf "Marilyn Monroe") "Is she an actress?" (Leaf "Hilary Clinton")))

showQa :: QA -> String 
showQa (Leaf x) = "(" ++ x ++ ")"
showQa (Question left x right) = "(" ++ x ++ showQa left ++ showQa right ++ ")"

instance Show QA where
  show = showQa

然后我使用 showQa 函数将树转换为字符串,以便能够将其存储在文件中,并将以下输出作为字符串:

"(Is she from Europe?(Is she a scientist?(Marie Curie)(Queen Elisabeth II))(Is she an actress?(Marilyn Monroe)(Hilary Clinton)))"

问题是当我再次从文件中读取字符串时,如何将此字符串转换为具有原始类型的原始树。

标签: haskellfunctional-programmingtreebinary-tree

解决方案


推荐阅读