【问题标题】:How does this binary tree code represent a tree?这个二叉树代码如何表示一棵树?
【发布时间】:2019-11-25 20:39:09
【问题描述】:

我正在阅读我大学 Haskell 考试的过去论文,遇到了一个涉及树的问题,其中树类型是这样实现的:

data Tree a = Lf a                  -- leaf
            | Tree a :+: Tree a     -- branch

然后它继续概述可用于各种功能的示例树,例如:

((Lf 1 :+: Lf 2) :+: (Lf 3 :+: Lf 4))

我对这段代码的困惑是它如何在没有根元素概念的情况下表示一棵树。我的直觉认为这里表示的树看起来像这样:

  / \
/ \ / \
1 2 3 4

但是这样一棵树没有根元素,只有叶子,这对我来说肯定是错误的。在这段代码中,树实际上是如何表达的?

【问题讨论】:

    标签: haskell data-structures tree


    【解决方案1】:

    这是一棵树,其数据仅存储在叶子中。不要求树的内部节点有数据,当然许多算法只能对内部节点有数据的树进行操作(例如 BST 搜索)。

    您可能会问这种结构在什么情况下有用。考虑霍夫曼解码,内部节点不需要数据。您只需沿着树向下遍历,在 0 上向左移动,在 1 上向右移动,直到到达叶节点,此时您已经解码了一个字符。

    【讨论】:

    • 所以我猜我的直觉是正确的。感谢您清理它!
    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2017-09-30
    • 2022-11-02
    • 2017-01-28
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多