数据结构/算法 快速复习篇

一、常见的数据结构.

  1. 。先进后出,如同一口井。
  2. 队列。先进先出,如同一条2头通的管道。
  3. 链表。以单个或多个结点,连接在一起的方式实现。分为单链表和双链表。区别在于,单链表是每一个结点只链结下一个结点。而双链表,既连接前一个结点,也连接下一个结点。双连接更利于双向编辑,但更加占内存。具体用哪个,视使用场景来看。
  4. 数组。以有序的方式,存放相同数据元素的一种数据结构。
  5. Map。以键值对的方式,一一对应存在。
  6. HashMap。基于Map的原理,内部是以数组+链表的组合方式实现。数组存的是链表,在没有Hash冲突的情况下,每个链表都只有一个节点。当出现Hash冲突时,将冲突的数据,添加在链表的未端。所以,HashMap查找的时间复杂度,最佳情况下为O(1),最差的情况为O(n)。Java8后,HashMap采用红黑树算法实现。所以,时间复杂度等同于红黑树查找结点的时间复杂度,为O(logn)。
  7. 二叉树。 以树状的形式链接,除叶子结点外,每个结点,有1个或2个子结点。
  8. 完全二叉树。 在二叉树的基础上,如果一个非叶子结点的结点,存在右边子结点,则其必定也有左边子结点。但有左边结点,未必有右边结点。即是说,给非叶子结点添加结点时,总是先从左边添加。
  9. 满二叉树。 在完成二叉树的基础上。对于何一非叶子结点的结点,一定存在左右两个结点。所以,满二叉树一定是完全二叉树。但完全二叉树,未必是满二叉树。
  10. 红黑树。 参考这篇文章的定义部分:红黑树的时间复杂度分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值