我在八月的 Haskell 中有重复,所以我正在尝试练习我的 Haskell。其中一个问题是:
“通过将列表的元素存储到二叉树中,然后遍历二叉树,以便按照右孩子、父母和左孩子的顺序访问子树的节点,来执行列表的反向猴子拼图排序。写一个Haskell中的反向猴子拼图排序“
这个问题让我很困惑。我知道我必须编写一个函数去 xr Node xl。但这是否必须从遍历的树中输出一个列表?或者我用列表重新填充二叉树还是什么?另外,我是从最右边的元素开始,然后到那个父元素然后向左走,还是从树顶部的第一个根节点开始,然后走那条路?
另外我将如何编写它,Haskell 是我的弱点之一。感谢您对此的任何帮助!
这是我的代码
module Data.BTree where
data Tree a = Tip | Node a (Tree a) (Tree a) deriving (Show,Eq)
leaf x = Node x Tip Tip
t1 = Node 10 Tip Tip
t2 = Node 17 (Node 12 (Node 5 Tip(leaf 8)) (leaf 15))
(Node 115
(Node 32 (leaf 30) (Node 46 Tip (leaf 57)))
(leaf 163))
t3 = Node 172 (Node 143 (Node 92 (Node 76 (leaf 32) (leaf 45)) (Node 58 (leaf 39) (leaf 52))) (Node 107 (Node 92 (leaf 64) (leaf 35)) (Node 86 (leaf 69) (leaf 70))))
(Node 155 (Node 127 (leaf 83) (leaf 97)) (Node 138 (leaf 107) (leaf 91)))