Python 官方文档:入门教程 => 点击学习
集合中三大数据结构 数组 内存地址连续 可以通过下标的成员访问,下标访问的性能高 增删操作有较大的性能消耗(需要动态扩容) 链表(双向链表)
存在问题:树可以认为是介于数组和链表二者之间的一种数据结构,拥有较快的查询速度同时拥有较快的插入和删除速度。但是在树出现极端或严重的不平衡情况下会导致效率低下
基于红黑树折中解决二叉树不平衡带来的效率低下问题
红黑树通过什么自平衡
左旋:以某个节点作为支点(旋转节点),其右子节点变为旋转节点的父节点,右子节点的左节点变为旋转节点的右子节点,左子节点保持不变
右旋:以某个节点作为支点(旋转节点),其左子节点变为旋转节点的父节点,左子节点的右子节点变为旋转节点的左子节点,右子节点保持不变
变色:节点的颜色由红色变为黑色或者黑色变为红色
1、红黑树为空
1.1 插入节点作为根节点并把节点设置为黑色
2、插入节点的父节点为黑节点\
2.1 直接插入
3、插入节点的父节点为红节点
3.1 叔叔节点存在且为红节点
3.2 叔叔节点不存在或者叔叔节点为黑色
3.2.1 P节点是PP节点的左节点
3.2.1.1 插入节点是P节点的左节点
3.2.1.2 插入节点是P节点的右节点
3.2.2 P节点是PP节点的右节点
3.2.2.1 插入节点是P节点的右节点
3.2.2.2 插入节点是P节点的左节点
PP节点左旋
3.2.2.2 插入节点是P节点的左节点
到此这篇关于详解Java集合中的基本数据结构的文章就介绍到这了,更多相关Java数据结构内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 详解Java集合中的基本数据结构
本文链接: https://lsjlt.com/news/127582.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0