【问题标题】:What do these properties mean for an insert function for a Binary Search Tree这些属性对于二叉搜索树的插入函数意味着什么
【发布时间】:2015-04-11 23:02:34
【问题描述】:

所以我的任务是编写一些属性来检查 BST 插入函数的正确性。

这里是stub code

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

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

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

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

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

prop_insert_duplicate_check insertFunction integer
这更令人困惑。现在我已经以与prop_insert_duplicate_check insertFunction integer 相同的方式实现它。这是否意味着接受重复项并将其插入到树中? (请记住,insertBST 函数是正确的,因此必须传递所有这些属性)。

【问题讨论】:

    标签: haskell binary-search-tree


    【解决方案1】:

    你应该和给你练习的人核实一下!

    但无论如何,我认为前两个是正确的。第一个,检查是否 isBST 在 Leaf 上为真,在插入给定整数后它仍然为真。第二个,你检查你有没有说插入整数的长度和存在。

    对于第三个,插入第一个整​​数,然后 newInteger 并检查整数是否仍然存在。

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

    希望这会有所帮助。

    【讨论】:

    • 谢谢!不,我们被告知 insertBST 是正确的。此外,我们得到了不正确的插入函数,其中一个不接受重复项,所以我猜我们的“正确”插入函数实际上应该接受并插入重复项。
    猜你喜欢
    • 2011-01-17
    • 2015-02-14
    • 2017-09-11
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多