几种复合类型的数据结构的比较(数组/链表/二叉树/平衡二叉树/红黑树)

一、数组

优点:

  • 内存大小固定,
  • 操作流程简单,查找数据方便;

缺点:

  • 内存要么很大,会浪费内存,要么很小,数据存储空间不够,
  • 删除或插入数据比较麻烦;

二、链表

优点:

  • 在内存中可以存在任何地方,不要求连续,
  • 链表大小不用定义,
  • 数据随意增删,增加数据和删除数据很容易。

缺点:

  • 查找数据时效率低,因为不具随机访问性,所以访问某个位置的数据都要从第一个数据开始访问,然后根据第一个数据保存的下一个数据的地址找到第二个数据,以此类推。要找到第三 个人,必须从第一个人开始问起。

三、二叉树

特点:

  • 左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大。

优点:

  • 快速查找,不需要为二叉树预先分配固定的空间,所的元素在树中是排序好的。

缺点:

  • 极端情况下,时间复杂度会由O(logn)变成O(n),即变成了一种链式结构。

四、平衡二叉树

特点:

  • 具有二叉树的全部特性,每个节点的左子树和右子树的高度差最多为1。

优点:

  • 具有二叉树的所有优点,并解决了二叉树的 链式极端情况,时间复杂度保持在O(logn)。

缺点:

  • 每次进行插入/删除节点的时候,几乎都会破坏平衡树的规则(每个节点的左子树和右子树的高度差至多等于1 ),每次都需要调整,使得性能大打折扣。

五、红黑树

特点:

  • 具有二叉树的特点;
  • 根节点是黑色的;
  • 叶子节点不存数据;
  • 任何相邻的节点都不能同时为红色;
  • 每个节点,从该节点到达其可达的叶子节点路径,都包含相同数目的黑色节点。

优点:

  • 具有二叉树所有特点,
  • 与平衡树不同的是,红黑树在插入、删除等操作,不会像平衡树那样,频繁着破坏红黑树的规 则,所以不需要频繁着调整,减少性能消耗;

缺点:

  • 代码复杂
  • 查找效率比平衡二叉树低
相关推荐
小碗羊肉8 分钟前
【数据结构】红黑树(Red-Black Tree)
数据结构
深邃-8 分钟前
字符函数和字符串函数(2)
c语言·数据结构·c++·后端·算法·restful
bekote11 分钟前
PTA基础编程题目集-6-11 求自定类型元素序列的中位数(简单解法)
数据结构·c++·算法
漫随流水11 小时前
c++编程:反转字符串(leetcode344)
数据结构·c++·算法
Titan202415 小时前
map和set的封装学习笔记
数据结构·c++
Yupureki15 小时前
《算法竞赛从入门到国奖》算法基础:动态规划-路径dp
数据结构·c++·算法·动态规划
算法鑫探16 小时前
C语言实战:学生成绩统计与分析
c语言·数据结构·算法·新人首发
_日拱一卒17 小时前
LeetCode:最小覆盖字串
java·数据结构·算法·leetcode·职场和发展
郝学胜-神的一滴17 小时前
Qt6 + OpenGL 3.3 渲染环境搭建全指南:从空白窗口到专属渲染画布的优雅实现
数据结构·c++·线性代数·算法·系统架构·图形渲染
小肥米17 小时前
分块查找ASL公式推导,为什么是两个ASL之和
数据结构·算法