数组,链表,树存储方式的分析 [Java][数据结构]

数组, 链表, 树存储方式的分析

首先我们提出一个问题 : 我们为什么要树这种存储结构?

这里我们通过比较数组和链表还有树的存储方式来说明为什么提出树结构:
  1. 数组存储方式的分析:

    • 优点: 通过下标方式访问元素速度快 , 对于有序数组还可以通过使用二分查找了提高检索速度
    • 缺点: 如果要检索具体的某个值 , 或者是插入值(按一定顺序), 那么就会整体移动, 效率比较低
  2. 链表存储方式的分析:

    • 优点: 在一定程度上对数组存储方式有优化(比如: 插入一个数值结点的时候,只需要将插入节点连接到链表中的指定位置即可, 同样的删除效率也很高)
    • 缺点: 进行检索时, 效率较低(我们检索某一个值时要从头开始遍历)
  3. 树存储方式的分析:

    • 能提高数据存储和读取的效率, 比如: 利用二叉排序树(BinarySort Tree),即可以保证数据的检索速度 , 同时也可以保持数据的插入, 删除, 修改的速度
      • 比如jdk8.0之后的HashMap底层就是使用的数组+ 链表+红黑树的结构 ,之所以使用红黑树就是因为如果当链表中元素比较多的时候查找的效率就会很慢 , 因为我们要遍历整个链表 , 所以我们就当链表中数据量到达一定程度的时候就将链表转换为一个红黑树, 这样就可以保证我们对元素增删改查的效率
        • 红黑树就是自平衡二叉树
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值