Modest opinions  
by a humble autodidact

2008年3月17日

摘要: 书上说的O(N)是时间复杂性,我们在说空间复杂性,哈哈哈哈。 阅读全文
posted @ 2008-03-17 22:50 yushih 阅读(154) 评论(0) 推荐(0) 编辑
 
摘要: 同志们研究.NET辛苦了!我来娱乐大家一下。如果你觉得这个娱乐很弱智,请看答案,答案下面还有一个娱乐。如果还是觉得弱智,请打028-110。反正我刚想到这个问题的时候是吃了一惊。 现在要用pre-order遍历一个N节点的二叉树,考虑需要多少堆栈空间,假设用递归算法(当然也可以用循环+一个堆栈数据结构,二者是等效的嘛)。先想最好的情况(先YY,再XX嘛):如果这个树是平衡的,它的高度就是log(N... 阅读全文
posted @ 2008-03-17 14:09 yushih 阅读(1521) 评论(6) 推荐(0) 编辑
 
摘要: 答案:当遇到只有一个子节点的节点(树不平衡性的来源)时,处理这个节点后,直接处理这个节点的唯一子节点就可以了,不用往堆栈里压任何东西。O(N)时间的pre-order遍历的最烂空间复杂性是O(N/2)。 娱乐2:用O(1)空间遍历任意二叉树,分别用pre-order,in-order和post-order。 补充一点:以上所说的二叉树,节点只包括数据和到两个子节点的链接,不包括回到父节点的链接... 阅读全文
posted @ 2008-03-17 13:51 yushih 阅读(338) 评论(0) 推荐(0) 编辑
 
摘要: State-changing和functional是两种截然不同的编程方式,但我突然觉得两种方式不是完全不能统一。可以这样看Statefulness :当覆盖原先的值的时候,原先的值是被“垃圾收集”掉了,而这个“垃圾”不是用遍历graph的方式动态发现的,而是在编译时就决定了--赋值操作的语义包含“我以后再也不会用原来的值了,它现在是垃圾... 阅读全文
posted @ 2008-03-17 12:38 yushih 阅读(474) 评论(4) 推荐(0) 编辑
 
摘要: 假设有这么一个F#表达式(为了清楚,没有用#light格式): (use var = expr in expr1; expr2; expr3) 现在的问题是这段代码的syntax tree是什么样的?具体的问题就是use ... in与;分隔符哪个的优先级更高?答案可能出乎意料-上面的代码看起来有点误导,实际上它等于: (use var = expr in (expr1; expr2; ex... 阅读全文
posted @ 2008-03-17 11:47 yushih 阅读(173) 评论(1) 推荐(0) 编辑
 
摘要: 这个程序以动画方式演示AVL树的插入操作。有助于被single rotation,double rotation和triple rotation转来转去转晕了的同学更直观的理解AVL树。截屏如下: 此时正要进行single rotation,狂点下面最左边的按钮就可以看到动画。最上面显示动画,中间的文字是解说。 下载压缩包内含使用说明。 特别说明:源码仅供不愿意运行下载程序的人士编译之用,不供参... 阅读全文
posted @ 2008-03-17 09:23 yushih 阅读(1241) 评论(0) 推荐(0) 编辑