haskell - 如何产生无限二叉树?

标签 haskell tree binary-tree

<分区>

我被要求为以下二叉树实现一个函数:

data BinaryTree a = Nil | BNode a (BinaryTree a) (BinaryTree a) 

我需要实现的函数应该生成一个完整的、对称的、无限的、a 的二叉树,并且应该有签名:

infTree :: a -> BinaryTree a

我该如何实现?

最佳答案

您可以创建一个循环引用,其中两个子节点都是父节点。

infTree :: a -> BinaryTree a
infTree x = tree
  where
    tree = BNode x tree tree

这与 repeat 的方式相同功能实现:

repeat :: a -> [a]
repeat x = xs where xs = x : xs

关于haskell - 如何产生无限二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063689/

相关文章:

java - 查找树中包含偶数个数据值的节点数

haskell - MonadRef 纯实现

haskell - haskell中有 `m a -> (a -> m b) -> m a`函数类型吗?

haskell - 如何在hmatrix上进行自动微分?

Haskell 无法创建 TypeClass 的实例

c - Pop() 方法总是给出堆栈中的第一个元素而不删除它

python - 在 python 中生成列表的条件乘积(组合)

c# - 如何使用 LINQ 合并树(和总计数)?

c - 二叉树 InOrderWalk 实现未按预期工作

algorithm - 如何找到任何二叉树中两个节点的最低公共(public)祖先?