再学 HashMap的红黑树

2021-06-12  本文已影响0人  卫渐行

1: 手写二分查找树

// 二叉查找树;
public class HelloWorld {
    public static void main(String[] args) {
      int[] x = new int[]{1,2,3,4,5,6,7,8,9,10,14,17,19};
      System.out.println(binarySearch(x,19));
    }
    public static int binarySearch(int[] arr,int num){
        int low = 0;
        int hight = arr.length - 1;
        while (low <= hight){
            int mid = low + (hight - low)/2;
            if (arr[mid] > num){
                hight = mid-1;
            } else if (arr[mid] < num)  {
                low = mid +1 ;
            }else{
                return mid;
            }
        } 
        return -1;
    }
}

//时间复杂度 o lg(n)
//空间复杂度 o(n)
注意二叉查找树的问题,存在最坏的情况,依赖数组的情况
AVL数,就是平衡树,各左右节点的高度差不超过1;能做到不偏向一方的情况

2: 红黑树的基本定义

五大特性

常见操作

左旋
src=http___store.codemouse.online_pic_488618b8f9442efe97b25969b29262ac.gif&refer=http___store.codemouse.gif

图片来源于网络

右旋
src=http___images.cnitblog.com_blog_94031_201403_270025038901226.gif&refer=http___images.cnitblog.gif

图片来源于网络

红黑树的查找

类似于二分查找树

红黑树的插入

插入节点必须是红色,插入的情况可能会影响到树的结构;插入的情况一般分为一下的集中情况

案例分析(todo List)

备注: 学习资料来源于B站

上一篇下一篇

猜你喜欢

热点阅读