【发布时间】:2015-12-29 05:30:53
【问题描述】:
给定一棵二叉树,我试图找到元素出现次数最多的二叉树级别,例如Apple。
以下是规格:
data Fruit = Peach | Apple
data BTree a = Empty | Node a (BTree a) (BTree a)
levelWithMaxApples :: BTree Fruit -> Int
我能够创建一个函数,给定一棵二叉树,它将计算其中 Apple 的出现次数。尽管如此,我还是不知道如何找到Apple 出现次数最多的级别,有什么提示吗?
这里有一些测试:
tree1 = Node Peach Empty Empty
tree2 = Node Peach
(Node Peach
(Node Apple
Empty
Empty)
(Node Peach
(Node Peach
Empty
Empty)
(Node Peach
Empty
Empty)))
(Node Apple
(Node Apple
Empty
(Node Peach
Empty
Empty))
Empty)
> levelWithMaxApples tree1
Nothing
> levelWithMaxApples tree2
2
这是我的尝试(在这种情况下,函数的名称应该是 countApples:
levelWithMaxApples Empty = 0
levelWithMaxApples (Node Apple l r) = 1 + levelWithMaxApple l + levelWithMaxApple r
levelWithMaxApples (Node Peach l r) = levelWithMaxApple l + levelWithMaxApple r
感谢您的帮助!
【问题讨论】:
-
写b-tree的时候,真的是指binary树吗? B-tree 也是一种非常重要的数据结构,但完全不同。
-
@dfeuer 我认为从示例中可以清楚地看出 OP 表示二叉树。我将相应地编辑问题。
标签: haskell binary-tree