摘要: 我们知道,对于一般的二叉搜索树(Binary Search Tree),其期望高度(即为一棵平衡树时)为log2n,其各操作的时间复杂度(O(log2n))同时也由此而决定。但是,在某些极端的情况下(如在插入的序列是有序的时),二叉搜索树将退化成近似链或链,此时,其操作的时间复杂度将退化成线性的,即O(n)。我们可以通过随机化建立二叉搜索树来尽量的避免这种情况,但是在进行了多次的操作之后,由于在删除时,我们总是选择将待删除节点的后继代替它本身,这样就会造成总是右边的节点数目减少,以至于树向左偏沉。这同时也会造成树的平衡性受到破坏,提高它的操作的时间复杂度。平衡二叉搜索树(Balanced Bi 阅读全文
posted @ 2014-03-24 18:21 crowinhell 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 今天在把 VLC 的代码转成 JAVA的过程中,遇到了一个让我困惑的问题对象间的赋值到底是怎样的就以前我的了解,JAVA的参数传递看似是引用传递,其实也是值传递,是把对象的地址拷贝后赋给 函数的参数,例如void set(object a1){ a1.set(" hello"); a1=new Object(" world");}在这里原来的对象只执行了第一布,而第二步没有执行。因为new 命令把新的地址给了a1,a1和函数的传入参数的地址已经彻底没有关系了。另外,JAVA中的对象赋值都是浅拷贝,也就是两个对象共同拥有同一个值,一个对象改变了这个值另外一 阅读全文
posted @ 2014-03-24 15:55 crowinhell 阅读(387) 评论(0) 推荐(0) 编辑