专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
51好读  ›  专栏  ›  ImportNew

红黑树插入算法实现原理分析

ImportNew  · 公众号  · Java  · 2017-04-05 11:59

正文

请到「今天看啥」查看全文





在实现红黑树之前我们先来定义一棵红黑树:


public class RedBlackLiteBST , Value> {

private static final boolean RED   = true;

private static final boolean BLACK = false;

private Node root;     // root of the BST

private int n;         // number of key-value pairs in BST

// BST helper node data type

private class Node {

private Key key;           // key

private Value val;         // associated data

private Node left, right;  // links to left and right subtrees

private boolean color;     // color of parent link

public Node(Key key, Value val, boolean color) {

this.key = key;

this.val = val;

this.color = color;

}

}

}


在上面的代码中,我们将链接的颜色保存在表示该结点的Node对象中的color变量中。如果指向它的链接是红色的,那么该变量为true,黑色则为false,我们规定空链接都为黑色。如下图所示,指向结点C的链接是红色,那么我们就将h.left.color设置为红色,指向结点J的链接是黑色的,我们就将h.right.color设置为黑色。



红黑树的几种基本操作


红黑树相比普通的二叉查找树的一个重要优势就是插入的高效性,但是正因为如此红黑树的插入操作的算法实现相比普通的二叉树要复杂一些。在正式实现插入算法之前,我们有必要先了解一下对于红黑树的几种基本操作。


左旋转







请到「今天看啥」查看全文