数据结构

来源:互联网 发布:php源码 下载站 编辑:程序博客网 时间:2024/06/11 00:42

链表

链表是一种由节点(node)组成的线性数据集合,每个节点通过指针指向下一个节点。它是一种由节点组成,并能用于表示序列的数据结构
单链表:每个节点仅指向下一个节点,最后一个节点指向空(null)。
双链表:每个节点有两个指针p,n。p指向前一个节点,n指向下一个节点;最后一个节点指向空(null)
循环链表:每个节点指向下一个节点,最后一个节点指向第一个节点
时间复杂度

  • 索引:O(n)
  • 查找:O(n)
  • 插入:O(1)
  • 删除:O(1)

栈是一个元素集合,支持两个基本操作:push用于将元素压入栈,pop用于删除栈顶元素
后进先出的数据结构(Last In First Out,LIFO)
时间复杂度

  • 索引:O(n)
  • 查找:O(n)
  • 插入:O(1)
  • 删除:O(1)


树是无向,联通的无环图。

二叉树

  • 二叉树是一个树形数据结构,每个节点最多可以有两个子节点,称为左节点和右节点。
  • 满二叉树(Full Tree): 二叉树中每个节点有0或者2个子节点。
  • 完美二叉树(Perfect Binary):二叉树中的每个节点有两个子节点,并且所有的叶子节点的深度是一样的。
  • 完全二叉树:二叉树中除最后一层外其他各层的节点数均达到最大值,最后一层的节点都连续集中在最左边

二叉查找树

二叉查找树(BST)是一种二叉树。其任何节点的值都大于等于左子树中的值,小于等于右子树中的值。
时间复杂度

  • 索引:O(log(n))
  • 查找:O(log(n))
  • 插入:O(log(n))
  • 删除:O(log(n))
原创粉丝点击