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

一、数组

优点:

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

缺点:

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

二、链表

优点:

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

缺点:

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

三、二叉树

特点:

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

优点:

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

缺点:

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

四、平衡二叉树

特点:

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

优点:

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

缺点:

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

五、红黑树

特点:

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

优点:

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

缺点:

  • 代码复杂
  • 查找效率比平衡二叉树低
相关推荐
fpcc1 小时前
数据结构和算法—数学的应用
数据结构·c++·算法
皓月斯语1 小时前
B4451 [GESP202512 四级] 建造 题解
数据结构·c++·算法·题解
牧以南歌〆3 小时前
数据结构<八>链式队列
c语言·数据结构·算法
一个初入编程的小白3 小时前
数据结构:队列和栈的相互实现
数据结构
牢姐与蒯8 小时前
双指针算法
数据结构·算法
Hesionberger8 小时前
LeetCode406:重建身高队列精髓解析
开发语言·数据结构·python·算法·leetcode
不一样的故事12612 小时前
军工行业合规与基础认知
数据结构·经验分享·算法
闪电悠米1 天前
力扣hot100-56.合并区间-排序详解
数据结构·算法·leetcode·贪心算法·排序算法
yuannl101 天前
图的存储方式
数据结构
会编程的小孩1 天前
初识数据类型以及变量定义
数据结构·算法