这些属性对二叉搜索树的插入函数意味着什么

What do these properties mean for an insert function for a Binary Search Tree

所以我的任务是编写一些属性来检查 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 函数是正确的,因此必须传递所有这些属性)。

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

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

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

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

希望这对您有所帮助。