2012年8月20日
摘要: 伸展树是一枚二叉树,可以维护一个数列,或者可以作为二叉搜索树,因为无论怎么旋转,它的中序遍历是不变的。1、伸展操作。Splay(x,goal):旋转结点x,使它成为结点goal的儿子。至于旋转,本质上只有左旋和右旋。2、插入。如果作为二叉搜索树,则插入与二叉搜索树一样,最后把该结点旋转到根。如果用于维护一个数列,要求在x位置之前插入val(val可以为一个数字或一个序列),则将第x-1个结点旋转到根,将第x个结点旋转到第x-1个结点的儿子,那么根据中序遍历,val应插入在第x个结点的左儿子。3、删除。与插入同理。4、Select(k)。在二叉搜索树中,对每个结点维护一个num值,如果x左儿子的 阅读全文
posted @ 2012-08-20 23:02 DrunBee 阅读(3445) 评论(0) 推荐(1)