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

一、数组

优点:

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

缺点:

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

二、链表

优点:

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

缺点:

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

三、二叉树

特点:

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

优点:

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

缺点:

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

四、平衡二叉树

特点:

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

优点:

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

缺点:

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

五、红黑树

特点:

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

优点:

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

缺点:

  • 代码复杂
  • 查找效率比平衡二叉树低
相关推荐
liu****1 小时前
10.queue的模拟实现
开发语言·数据结构·c++·算法
shinelord明1 小时前
【大数据技术实战】Kafka 认证机制全解析
大数据·数据结构·分布式·架构·kafka
让我们一起加油好吗2 小时前
【基础算法】01BFS
数据结构·c++·算法·bfs·01bfs
草莓工作室2 小时前
数据结构3:线性表2-顺序存储的线性表
数据结构·windows
1白天的黑夜12 小时前
递归-24.两两交换链表中的节点-力扣(LeetCode)
数据结构·c++·leetcode·链表·递归
1白天的黑夜13 小时前
递归-206.反转链表-力扣(LeetCode)
数据结构·c++·leetcode·链表·递归
靠近彗星3 小时前
3.1 栈
数据结构·算法
孤廖4 小时前
吃透 C++ 栈和队列:stack/queue/priority_queue 用法 + 模拟 + STL 标准实现对比
java·开发语言·数据结构·c++·人工智能·深度学习·算法
豆沙沙包?5 小时前
2025年--Lc197-077. 排序链表(链表,尾插法)--Java版
java·数据结构·链表
杨福瑞6 小时前
C语言数据结构:算法复杂度(2)
c语言·开发语言·数据结构