链表和二叉树

本文探讨了数组、链表和二叉树这三种常见数据结构的特点和应用场景。数组存储速度快,但在扩容和删除操作上效率低下,可能导致内存浪费。链表则通过指针实现离散存储,方便增删,但查找效率较低。二叉树以其特有的存储方式,提供快速查找能力,适合有序数据。理解这些数据结构的特性对于选择合适的数据结构优化算法至关重要。
摘要由CSDN通过智能技术生成

数组

数组最大的问题在于

  • 每次扩容需要先开辟一块新数组
  • 把旧数组的内容,一个个复制到新数组
  • 再把旧引用,指向新数组的地址
  • 速度慢-需要copy
  • 浪费内存
  • 数据删除的时候,被删位置后的数据,需要一个个向前平移
  • 如果只是从一个集合中取,同时集合的长度是固定的,可以用Array
  • 一旦牵扯到扩容和删除,array会超级麻烦
  • 数组是一种线性连续型的存储结构,元素类型相同
  • 数组的优点是存储速度较快

链表

  • 离散存储的线性结构
  • 链表中的元素内存上不必相连
  • 元素彼此通过指针相连,每个节点只有一个前驱节点(除了首节点),每个节点也有一个后续节点(除了尾节点)
  • 在这里插入图片描述# 二叉树
  • 与链表类似,二叉树也存储了其子节点的指针。但二叉树存储的是左孩子与右孩子的地址。
  • 通常的时候,二叉树存储都是有序的。左孩子节点小于父节点,右孩子节点大于父节点
  • 由于二叉树特殊的存储方式,因此在查找数据的时候,用二叉树会特别方便(相较于链表)。。。整体逻辑类似于二分查找。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值