data Tree a = Null | Node a (Tree a) (Tree a)
deriving (Read,Show)
在这里遇到问题,如何找到二叉树的最大值?
答案 0 :(得分:1)
正如一些评论建议的那样,你可以对树进行排序,并取最大值。您可以使用早期的inOrder
和makeTree
函数创建树排序函数:
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