haskell中最大的一棵树

时间:2017-11-07 13:29:29

标签: haskell binary-search-tree

data Tree a = Null | Node a (Tree a) (Tree a)
     deriving (Read,Show)

在这里遇到问题,如何找到二叉树的最大值?

1 个答案:

答案 0 :(得分:1)

正如一些评论建议的那样,你可以对树进行排序,并取最大值。您可以使用早期的inOrdermakeTree函数创建树排序函数:

treeSort :: (Ord a) => [a] -> [a]
treeSort xs = inOrder (makeTree xs)

以排序的顺序列出您的树项目,然后只需获取maximum

maxTree :: (Ord a) => [a] -> a
maxTree xs = maximum (treeSort xs)

有这种行为:

Prelude> let sortedTree = treeSort [4,3,2,1,5,6,8,7,9]
Prelude> sortedTree
[1,2,3,4,5,6,7,8,9]
Prelude> maxTree sortedTree
9