本帖最后由 specialco 于 2011-01-31 14:21:59 编辑

解决方案 »

  1.   

    再来个BIG-Oh的Question Number 5Select the option that denotes, "runtime is proportional to five times the input size". 1.O(5n)
    2.O(n5)
    3.5*O(n)
    4.5O(n)
      

  2.   

    Question 1,我认为A和C是必须要做的改变,B不是.
    从题里看来,解题需要的信息,(我认为有的信息是垃圾信息,与解题无关).大概是说,有Node节点类,TerminalNode终端节点类,InternalNode内部节点类,三大类.题里没有明说它们之间的继承关系,从复杂程度上来看,终端节点类和内部节点类的基类应该都是节点类.它们有这样的属性:终端节点类包含了字符值.内部节点类不包含值,只是有左右两个子节点而已...其他信息都是浮云.
    而现在,我们要做一些改变.我们已经强调过内部节点类不包含值,包括它的子节点.现在,假设我们让内部节点类可以包含字符值,就像终端节点类一样.假设我们把终端节点类的字符值字段和它的setValue()及getValue()方法都挪到节点类里去了,来满足前面一条改变,请问:下面还有哪些改变是必须的?
    选A,也就是1. Change TerminalNode抯 constructor to call Node抯 constructor rather than setting the value directly.
    因为题里已经说了Assuming that TerminalNode抯 String-valued field and getValue and setValue methods are moved to Node to implement this change.意思就是假设TerminalNode终端节点类的字符值字段和它的getValue(),setValue()方法都移动到Node节点类的执行文件里去了.所以,TerminalNode类调用Node类的构造函数比较好,而不是直接去设置值.
    而题目又说了Suppose that were changed so an InternalNode contains a String value, just like TerminalNode.假设我们改变一下,InternalNode内部节点类包含了一个字符值,就像终端节点类一样.而题里又说了Node节点类现在能够处理字符值了(从终端节点类移植过去的).所以,为什么不在内部节点类里直接调用Node的构造函数呢?所以,选择C,也就是3.Add a call to Node抯 constructor to every constructor in InternalNode.
    以上纯属我个人的解题思路,如有不对还请大家狠批.
      

  3.   

    Question 5,如果这是一道计算机编程题的话,我就选3.5*O(n).因为只有这样写才符合计算机语言的乘法写法.
    很明显,O(x)是输入了一个x值作为参数,然后O(x)函数处理了一下可能输出了一个值.
    而题目是说runtime(这个不知道怎么确切翻译好,不过你懂的..)是输入大小的5倍,如果不是编程题就选1.O(5n)
    以上是我胡乱分析的...囧