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

一、数组

优点:

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

缺点:

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

二、链表

优点:

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

缺点:

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

三、二叉树

特点:

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

优点:

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

缺点:

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

四、平衡二叉树

特点:

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

优点:

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

缺点:

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

五、红黑树

特点:

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

优点:

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

缺点:

  • 代码复杂
  • 查找效率比平衡二叉树低
相关推荐
2301_800256114 小时前
数据结构基础期末复习例题
数据结构·算法
变量未定义~4 小时前
单调栈-四元组问题
数据结构·算法
拂拉氏6 小时前
【知识讲解】 红黑树的删除讲解
数据结构·算法·红黑树
小七在进步7 小时前
数据结构:用栈实现队列
开发语言·数据结构
2301_800256117 小时前
数据结构基础hw9判断选择题、hw7编程题、hw12编程题
数据结构·算法
小七在进步7 小时前
数据结构:用队列实现栈
开发语言·数据结构
东华万里7 小时前
第37篇 手撕二叉树与堆的底层逻辑
数据结构·算法
知无不研7 小时前
算法:判断一个数是不是2的幂
数据结构·算法
码少女17 小时前
数据结构——哈希表的基础
数据结构·散列表
smj2302_7968265219 小时前
解决leetcode第3985题回文数组求和
数据结构·python·算法·leetcode