tal*_*tal 1 tree binary-tree haskell
我被要求为以下二进制树实现一个功能:
data BinaryTree a = Nil | BNode a (BinaryTree a) (BinaryTree a)
Run Code Online (Sandbox Code Playgroud)
我需要实现的功能应该产生一个完整的,对称的,无限的二进制树a,并且具有以下特征:
infTree :: a -> BinaryTree a
Run Code Online (Sandbox Code Playgroud)
我该如何实施?
您可以创建一个循环引用,其中两个子节点均为父节点。
infTree :: a -> BinaryTree a
infTree x = tree
where
tree = BNode x tree tree
Run Code Online (Sandbox Code Playgroud)
这与repeat函数的实现方式相同:
repeat :: a -> [a]
repeat x = xs where xs = x : xs
Run Code Online (Sandbox Code Playgroud)