我误解了SICP练习2.65的含义吗?

这里是SICP行使2.65:我误解了SICP练习2.65的含义吗?

使用的练习2.63和2.64的成绩给予Θ(n)的实现工会集,并且对为(平衡)二叉树实现集合交叉点设置。

在“设置为有序列表”和练习2.62的章节中,我们已经为有序列表设置了联合集和交集。我搜索了互联网,2.65的答案太简单了,他们只是将二叉树转换为列表,并仍然使用联合集和交集为有序列表设置。

在我看来,我们需要将这些集合转换为二叉树,并重写二叉树的联合集和交集。

那么,我误解了SICP练习2.65的含义吗?还是有一个很好的答案?

回答:

“简单”的答案是在这种情况下,正确的:锻炼时,首先转换成树列表(事实上,下令名单,因为我们正在做的序树的遍历),然后使用ordered-解决设置程序,最后将结果集转换回树。为什么这是正确的?因为所描述的程序使用已有的程序实现了所需的复杂性 - 无需重新发明轮子!

尽管可以通过操纵树来编写“直接”答案,但它太麻烦了,而且要在O(n)中实施而不使用变异操作会非常棘手(如果不是不可能的话)在本书中,我们尚未使用set!,set-car!set-cdr!

回答:

你是对的,你可能使用文本的早期例子作为编写平衡二叉树的union-setintersection-set的高效实现的指南。然而,文本明确地告诉你使用前面两个练习的结果,所以它引导你走向一个特定的解决方案。该解决方案(将二叉树转换为列表以将问题简化为已解决的问题)已经是O(n),无论如何,这是最好的顺序。

以上是 我误解了SICP练习2.65的含义吗? 的全部内容, 来源链接: utcz.com/qa/263386.html

回到顶部