伸展树&红黑树
一.伸展树特点
二.Java实现
三.与红黑树的比较
一.伸展树特点
前面写了二叉查找树BSTree和一种平衡二叉树AVL树的java实现。再看伸展树(Splay Binary Search Tree),写起来就比较顺了。
特点: 每次插入或者删除节点,都会旋转该节点(或其前驱/后继节点),使之成为根节点。 这种树为达到的核心目的使最近访问的节点位于根节点及其附近。
二.java实现
理论可参考:http://www.cnblogs.com/vamei/archive/2013/03/24/2976545.html,这是一种自下而上的实现方式。
下面只写到了增加和查询节点后的旋转,对于删除,后面补上。
package comUtils;
public class SBSTree<T extends Comparable<T>>{
SBSNode<T> root;
public class SBSNode<S extends T>{
T key;
SBSNode<T> left;
SBSNode<T> right;
public SBSNode(T key, SBSTree<T>.SBSNode<T> left,
SBSTree<T>.SBSNode<T> right) {
super();
this.key = key;
this.left = left;
this.right = right;
}
}
/**@description
* 判断SBS类型的节点是否为空
*/
public boolean isNull(SBSNode<T> sBSNode){
return null