红黑树学习

查找算法

暴力:遍历for循环
二分:能做二分查找的条件?有序
**哈希(最高效的查找)**O(1)
插值
索引:搜索引擎,Lucene
bfs/dfs图论的遍历
平衡树
B+树
B-Tree
红黑树:高效查找数据的结构
二叉搜索树
时间复杂度就是数的深度

Java的1.8之中的Hashmap:链表+红黑树

HashMap与红黑树的学习,当使用hashmap的时候出现排序的情况。

二叉查找树(红黑树)

在这里插入图片描述
平衡二叉树:
平衡二叉树的折中,最理想的状态
红黑树的底层结构是什么?二叉查找树
链表(暴力查找)->二叉树()–>特殊的二叉树(自平衡二叉查找树)

在这里插入图片描述
注意:两个 黑色可以连接在一起
根节点是黑色(没有父节点)入度为0
红色节点的子节点是黑色,叶子节点都是黑色,出度为0,满足了性质就可以近似平衡。
在这里插入图片描述
迫害的规则
下面是对红黑树的基本内容:下面是代码实现

package redblacktree;

/**
 * @author xinyu
 * @create 2021-03-0421:07
 *这里实现红黑树的代码
 */
public class red {
    //定义红黑节点,这里的红黑节点采用0,1 来表示
    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){
        if (root.data<data){
            if (root.right == null){
                root.right = new Node(data);
            }
            else insert(root.right,data);
        }
        else{
            if (root.left == null){
                root.right = new Node(data);
            }
            else insert(root.left,data);
        }
    }
    //红合黑叔的左旋
    //分三步1.
    public void leftRotate(Node node){
        if (node.parent == null){
            //表示根节点
            Node E = root;
            Node S = root.right;

            //第一步操作,
            E.right = S.left;
            S.left.parent = E;
            
            //修改E的指针,第三步修改S的指针
            E.parent = S;
            S.parent = null;


        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值