多种数据结构的定义及特性:

  • 线性表:零个或多个数据元素的有限序列。
  • (后进先出)是限定仅在表尾进行插入与删除操作的线性表。
  • 队列(先进先出)是指只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
  • 串:是由零个或多个字符组成的有限序列,又称为字符串。
  • 二叉树:是 n(n>=0)个结点的有限集合,该集合或者为空集,或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。 
  • 每个结点最多有两棵子树,所以二叉树不存在度大于2的结点(注意:不是只有两棵子树,而是最多有两棵子树,没有子树或者有一颗子树都是可以的);
  • 左子树和右子树都是有顺序的,次序不能任意颠倒;
  • 即使只有一棵子树,也要区分清它是左子树还是右子树;
  • 图:是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。

 二叉树遍历:

  • 前序遍历(根左右):若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树;
  • 中序遍历(左根右):若二叉树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后访问根结点,最后中序遍历右子树;
  • 后序遍历(左右根):若二叉树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历左右子树,最后访问根结点;
  • 层序遍历:若二叉树为空,则空操作返回,否则从树的第一层,也就是从根结点开始访问,从上而下逐层遍历,在同一层中,按从左到右的顺序依次访问。

 图的遍历:

  • 深度优先遍历:类似树的前序遍历;
  • 广度优先遍历:类似树的层序遍历。

 各种排序算法的时间复杂度:

  • 冒泡排序、简单选择、直接插入排序:O(n*2)
  • 快速排序、堆排序、归并排序:O(nlogn)
  • 希尔排序:O(nlogn) ~ O(n*2)