【发布时间】:2019-01-18 21:30:55
【问题描述】:
data BTree a = Nil | Node a (BTree a) (BTree a) deriving Show
我了解了两种二叉搜索树。一个是完美的另一个是 完成。
二叉树是完美二叉树,其中所有内部节点都有两个孩子,并且所有叶子都在同一级别。
二叉树是完整的二叉树,如果所有层都被完全填满,除了可能的最后一层并且最后一层的所有键都尽可能离开
检查二叉树是否完美的代码非常简单
isPerfect :: BTree a -> Bool
isPerfect Nil = True
isPerfect (Node x Nil Nil) = True
isPerfect (Node x lt Nil ) = False
isPerfect (Node x Nil rt ) = False
isPerfect (Node x lt rt ) = (&&) (isPerfect lt) (isPerfect rt)
如何检查树是否完整?
【问题讨论】:
-
你的
isPerfect函数对我来说看起来不对。如果t是深度为 1 的完美树,u是深度为 2 的完美树,isPerfect (Node x t u)应该是什么? -
validfunction 的container的Set类型对您来说应该很有趣。
标签: haskell binary-search-tree