Haskell 这些属性对于二进制搜索树的插入函数意味着什么

Haskell 这些属性对于二进制搜索树的插入函数意味着什么,haskell,binary-search-tree,Haskell,Binary Search Tree,因此,我的任务是编写一些属性来检查BST的插入函数的正确性 这是你的电话号码 我的问题是决定我到底需要做什么。 我推断插入BST的正确方法是在适当的位置插入(以保留BST属性),并允许插入重复项 你能帮我确定每个属性的含义吗?以下是我目前的想法: prop\u insert\u保留\u bst insertFunction integer 这意味着检查BST的结构是否正确。也就是说,每个元素都位于正确的位置,左分支中的所有元素都具有较低的值,而右分支中的所有元素都具有较高的值 prop\u in

因此,我的任务是编写一些属性来检查BST的插入函数的正确性

这是你的电话号码

我的问题是决定我到底需要做什么。 我推断插入BST的正确方法是在适当的位置插入(以保留BST属性),并允许插入重复项

你能帮我确定每个属性的含义吗?以下是我目前的想法:

prop\u insert\u保留\u bst insertFunction integer

这意味着检查BST的结构是否正确。也就是说,每个元素都位于正确的位置,左分支中的所有元素都具有较低的值,而右分支中的所有元素都具有较高的值

prop\u insert\u添加元素insertFunction integer

我对这个感到困惑。最初我只是检查新树(插入后)容器是否为整数。现在我检查新的树是否长了1个长度,并且有1个整数新元素

prop\u insert\u不更改其他元素insertFunction integer newInteger

对于这一个,我检查了新树中的每个元素是否和原始树相同。但是我不知道newInteger是什么,我没有在我的实现中使用它

prop\u insert\u duplicate\u check insertFunction integer


这更令人困惑。现在我已经用与
prop\u insert\u duplicate\u check insertFunction integer
相同的方法实现了它。这是否意味着接受重复项并将其插入到树中?(请记住,
insertBST
函数是正确的,因此必须通过所有这些属性)。

您应该与给您练习的人核实

但不管怎样,我认为你对前两个是正确的。首先,检查如果叶上的isBST为true,则在插入给定整数后仍然为true。第二个,你检查你所说的插入整数的长度和存在性

对于第三个,插入第一个整数,然后newInteger和check integer仍然存在

对于第四个,需要插入两次整数并检查结果是否符合预期。看起来当前代码没有检查重复项,您确定不应该修复insertBST函数吗?如果这是正确的,您需要检查边参数,如果不是,您需要检查插入两次和插入一次生成相同的树


希望这有帮助。

谢谢!不,我们被告知insertBST是正确的。此外,我们得到了不正确的插入函数,其中一个函数不接受重复项,所以我想我们的“正确”插入函数实际上应该接受并插入重复项。