红黑树和B树

1.二叉查找树

2.红黑树

2.1定义

2.2变换规则

左旋

 

右旋

  

 

部分实现代码

package 练习;

public class RedBlackTree {
    private final int R = 0;
    private final int B = 1;

    private Node root = null;

    class Node {
        int data;
        int color = R;
        Node left;
        Node right;
        Node parent;

        public Node(int data) {
            this.data = data;
        }
    }

    public void insert(Node root, int data) {//root默认不为空的情况下
        if (root.data < data) {//插入到右边
            if (root.right == null) {
                root.right = new Node(data);
            } else {
                insert(root.right, data);
            }
        } else {
            if (root.left == null) {
                root.left = new Node(data);
            } else {
                insert(root.left, data);
            }
        }
    }

    public void leftRotate(Node node) {
        if (node.parent == null) {//表示是根节点
            Node E = root;
            Node S = E.right;

            //移S的左子树
            E.right = S.left;
            S.left.parent = E;

            //修改E的指针
            E.parent = S;

            //修改S的指针
            S.parent = null;

        }
    }

}

3.B树

4.B+树

5.总结

原文地址:https://www.cnblogs.com/xinmomoyan/p/12392980.html