Java集合中的基本数据结构

文章讲述了红黑树作为一种自平衡的二叉查找树在Java高级面试中的关键性,包括其规则、自平衡机制(左旋、右旋和变色)、插入场景以及它在解决二叉树不平衡和高效查询中的作用。同时提到了Java高级技术知识点,如Redis、分布式系统等。
摘要由CSDN通过智能技术生成
  • 某节点的左子树节点仅包含小于该节点的值

  • 某节点的右子树节点仅包含大于该节点的值

  • 节点必须是二叉树

  • 顺序排列

在这里插入图片描述

存在问题:树可以认为是介于数组和链表二者之间的一种数据结构,拥有较快的查询速度同时拥有较快的插入和删除速度。但是在树出现极端或严重的不平衡情况下会导致效率低下

在这里插入图片描述

基于红黑树折中解决二叉树不平衡带来的效率低下问题

1.3.1 红黑树

  • 红黑树,Red-Black Tree [RBT]是一个自平衡(不是绝对平衡)的二叉查找树(BST),树上的每个节点需要遵循下面的规则

  • 每个节点要么是黑色,要么是红色

  • 根节点为黑色

  • 每个叶子节点(NIL)是黑色

  • 不能存在两个连续的红色节点(红色节点的两个子节点必须是黑色)

  • 任一节点到叶子节点的路径包含相同数量的黑节点

在这里插入图片描述

红黑树通过什么自平衡

  • 左旋:以某个节点作为支点(旋转节点),其右子节点变为旋转节点的父节点,右子节点的左节点变为旋转节点的右子节点,左子节点保持不变

在这里插入图片描述

  • 右旋:以某个节点作为支点(旋转节点),其左子节点变为旋转节点的父节点,左子节点的右子节点变为旋转节点的左子节点,右子节点保持不变

在这里插入图片描述

  • 变色:节点的颜色由红色变为黑色或者黑色变为红色

在这里插入图片描述

红黑树插入场景

1、红黑树为空

​ 1.1 插入节点作为根节点并把节点设置为黑色

2、插入节点的父节点为黑节点\

​ 2.1 直接插入

3、插入节点的父节点为红节点

​ 3.1 叔叔节点存在且为红节点

​ 1、P节点和S节点设置为黑色

​ 2、PP节点设置为红色

​ 3、PP设置为当前插入节点

​ 4、再次重复上述步骤

​ 3.2 叔叔节点不存在或者叔叔节点为黑色

​ 3.2.1 P节点是PP节点的左节点

​ 3.2.1.1 插入节点是P节点的左节点

​ 1、P设置为黑色

​ 2、PP节点设置为红色

​ 3、PP节点右旋

​ 3.2.1.2 插入节点是P节点的右节点

​ 1、P节点左旋

​ 2、把P设置为插入节点(此时等于上面的场景)

​ 3、PP节点右旋

2021年Java中高级面试必备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

部分内容:

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

img-GdGj2pRE-1714395355126)]

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值