【发布时间】:2021-08-12 10:46:20
【问题描述】:
我正在阅读 Haskell 教程 https://www.futurelearn.com/courses/functional-programming-haskell/9/steps/1103477,本节将调用一个将节点插入二叉树的函数。我想添加树是 BST 的约束,因此想将我的基本情况定义为“如果要插入的值小于叶节点处的值,则添加左节点,否则添加一个正确的节点”。 Adding a leaf to Binary Search Tree, Haskell 这里有一个类似的帖子,但它似乎应用了一种尚未使用 @ 引入的技术。如果试图实现这一点,我正在努力寻找一种访问叶节点数值的方法。另外,我不确定我会返回哪个节点。我很想返回插入点。任何帮助将不胜感激。
方法的typedef如下
data Tree = Leaf | Node Int Tree Tree deriving Show
insertNodeToBST :: Tree -> Int -> Tree
insertNodeToBST Leaf value =
if value < LeafValue
then (Node value (Node value null null) null)
else (Node value null (Node value null null))
【问题讨论】:
-
当你在一个模式中看到
t@(...)时,只需将你看到的每个t实例替换为右侧的(...),你就可以开始使用了。您应该完全能够将其应用于您在那里找到的问题。 -
在该数据类型中,叶子没有任何价值,除非您将“叶子”称为
Node v Leaf Leaf之类的东西,即刚好超过两个Leaf的节点。
标签: haskell