【问题标题】:Constructiing and modifying trees with the Data.Tree module使用 Data.Tree 模块构建和修改树
【发布时间】:2021-07-26 21:25:47
【问题描述】:

我想在 Haskell 中使用树来存储单词列表。我想为我的目的使用一个通用的 NTree(n-ary),我认为 container 包中的 Data.Tree 模块可能是一个很好的解决方案。

我的问题是我不知道如何处理这个模块,例如它的 API 与 Data.Map 非常不同。

你知道插入元素、从列表中导入数据、测试元素是否存在等功能吗?

我的模块选择正确吗?他们的另一个模块合适吗?

【问题讨论】:

  • 这不是一个搜索树,它是一个“简单”的树...
  • 他们的另一个包是否提供通用搜索树?
  • 你为什么不直接使用Data.Map而不用担心实际的树实现?
  • 我可以使用Data.Map,但我不想根据键查找值,而只是测试一个值是否是树的成员。 Data.Map 中的 member 函数测试是否存在密钥。我想测试一个值是否存在。
  • 那么Data.Set? (或等价于Data.Map,其中值存储在关键字段中,映射值为()。)

标签: haskell tree containers binary-search-tree


【解决方案1】:

根据@leftroundabout,您可能正在寻找Data.Set。这是支持insert、测试membership 和转换fromList 的集的基于树的实现。

如文档中所述,该实现使用大小平衡的二叉树,因此它们不是一般的 n 叉树。如果您真的想使用 n 叉树,您可能必须从头开始编写自己的实现,也许使用 Data.Tree 作为起点。

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多