【数据结构】数组、链表、栈、队列、二叉树

数组

  1. 数组存储的数据在地址空间上是连续的。
  2. 方便数据的查找,查找数据的时间复杂度为O(1)。

如图所示


链表

  1. 链表存储的数据在地址空间上可连续,可不连续。
  2. 链表中的每一个节点都包括数据和指向下一个地址的指针。
  3. 查找数据的时间复杂度为O(n),方便数据的增删。

如图所示

如何快速找到链表的中间值:
  1. 先遍历一遍单链表确定长度L,然后再次从头结点出发循环L/2次
  2. 设置两个指针都指向单链表的头结点,第一个指针的移动速度是第二个的2倍,当第一个指向末尾结点时,第二个就指向了中间结点。这种方法要快一些。

  1. 栈是一种先入后出的逻辑结构,每次加入新的元素和拿走元素都在顶部操作。

如图所示


队列

  1. 队列是一种先入先出的逻辑结构,对元素的操作分别在对头和队尾,元素的插入在对尾,元素的删除在对头。

如图所示


二叉树

  1. 每个节点至多只有两个子树的结构,在父节点中有指向左右子树的指针
    • 先序遍历:根–左–右
    • 中序遍历:左–根–右
    • 后序遍历:左–右–根
  2. 查找二叉树:左子树的值小于根节点的值,右子树的值大于根节点的值,在插入数据时,从根节点开始往下比较,小于比较值则放在左边,大于比较值放在右边。插入一个值的时间复杂度是O(logn)
  3. 平衡二叉树:左右子树的高度差的绝对值不超过1
    如图所示
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值