1、线性结构与非线性结构
线性结构:线性表,栈,队;一个根节点,最多一个前节点一个后节点;首节点无前节点,尾接点无后节点
非线性结构:树形结构,图形结构
线性表:由一组数据元素构成,数据元素的位置只取决于自己的序号;数组
栈:限定只能在表的一端进行插入和删除,先进后出,只能在栈顶进出
队列:只能在表的一段进行插入,在表的另一端进行删除。先进先出,进的叫队尾,出的叫队头
循环队列:首尾相接的队列
线性链表:单链表,双链表,循环链表
树:由一个或多个结点组成的有限集合,仅只有一个根节点
结点:树中的元素
结点的度:结点拥有的子树数
结点的层次:从根结点开始算起,根为第一层
叶子:度为零的结点,也称端结点
孩子:结点子树的跟称为该结点的孩子结点
深林:M颗互不相交的树的集合
深度:树中结点的最大层次数
满二叉树:所有分支结点都存在左右子树,且所有叶子结点都在同一层上。
完全二叉树:除最后一层外,每一层都取最大结点数,最后一层结点都集中在该层最左边的若干位置。
二叉树:二叉树的第i层上至多有2(i-1)次方(i大于等于1)个结点。
深度为h的二叉树中至多含有2(h-1)次方个结点。
若在任意一棵二叉树中,有n0个叶子结点(度为0),有n2个度为2的结点,则:n0=n2+1
具有n个结点的完全二叉树的深度为[log2n]+1,其中 [log2n]表示log2n 的整数部分。
设完全二叉树共有n个结点,如从根结点开始,按层序(每一层从左到右)用自然数1,2,…,n给结点进行编号,则对于编号为k(k=1,2,…,n)的结点有以下结论:
①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点的编号为INT(k/2)。
②若2k≤n,则结点k的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)。
③若2k+1≤n,则结点k的右子结点编号为2k+1;否则该结点无右子结点。
二叉树的遍历:
先序遍历:根左右
中序遍历:左根右
后序遍历:左右根
2、链式存储与顺序存储
顺序存储:将逻辑上相邻的数据元素存储在物理上相邻的存储单元里。数组
链式存储:每个节点都由两部分组成,数据域与指针域。链式
顺序存储二叉树必须按完全二叉树的形式存储,将造成存储的浪费。
3、排序方法:
插入排序:直接、折半插入排序
选择排序:简单选择排序 堆排序
交换排序:起泡排序,快速排序
归并排序:
折半插入排序:折半插入排序在寻找插入位置时,不是逐个比较而是利用折半查找的原理寻找插入位置 。待排序元素越多,改进效果越明显。
简单选择排序 :首先从1~n个元素中选出关键字最小的记录交换到第一个位置上。然后再从第2 个到第n个元素中选出次小的记录交换到第二个位置上,依次类推。
时间复杂度为O(n2),最坏情况下需要比较 n(n-1)/2次
适用于待排序元素较少的情况。
冒泡排序(起泡排序)
思想:小的浮起,大的沉底。从左端开始比较。
4、图:节点(图中称顶点)间的连接是任意的。
图的分类:有向图、无向图
顶点的度:依附于该顶点的边数或弧数。
出度:(仅对有向图)以该顶点为尾的弧数。
入度:(仅对有向图)以该顶点为头的弧数。
路径:顶点A与顶点C之间存在一条路径。路径上边或弧的数目称为该路径的路径长度。
连通图:在无向图G中,任意两顶点vi、vj都是连通的,则称G是连通图。n个顶点的连通图中边的条数至少为n-1条.
线性结构:线性表,栈,队;一个根节点,最多一个前节点一个后节点;首节点无前节点,尾接点无后节点
非线性结构:树形结构,图形结构
线性表:由一组数据元素构成,数据元素的位置只取决于自己的序号;数组
栈:限定只能在表的一端进行插入和删除,先进后出,只能在栈顶进出
队列:只能在表的一段进行插入,在表的另一端进行删除。先进先出,进的叫队尾,出的叫队头
循环队列:首尾相接的队列
线性链表:单链表,双链表,循环链表
树:由一个或多个结点组成的有限集合,仅只有一个根节点
结点:树中的元素
结点的度:结点拥有的子树数
结点的层次:从根结点开始算起,根为第一层
叶子:度为零的结点,也称端结点
孩子:结点子树的跟称为该结点的孩子结点
深林:M颗互不相交的树的集合
深度:树中结点的最大层次数
满二叉树:所有分支结点都存在左右子树,且所有叶子结点都在同一层上。
完全二叉树:除最后一层外,每一层都取最大结点数,最后一层结点都集中在该层最左边的若干位置。
二叉树:二叉树的第i层上至多有2(i-1)次方(i大于等于1)个结点。
深度为h的二叉树中至多含有2(h-1)次方个结点。
若在任意一棵二叉树中,有n0个叶子结点(度为0),有n2个度为2的结点,则:n0=n2+1
具有n个结点的完全二叉树的深度为[log2n]+1,其中 [log2n]表示log2n 的整数部分。
设完全二叉树共有n个结点,如从根结点开始,按层序(每一层从左到右)用自然数1,2,…,n给结点进行编号,则对于编号为k(k=1,2,…,n)的结点有以下结论:
①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点的编号为INT(k/2)。
②若2k≤n,则结点k的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)。
③若2k+1≤n,则结点k的右子结点编号为2k+1;否则该结点无右子结点。
二叉树的遍历:
先序遍历:根左右
中序遍历:左根右
后序遍历:左右根
2、链式存储与顺序存储
顺序存储:将逻辑上相邻的数据元素存储在物理上相邻的存储单元里。数组
链式存储:每个节点都由两部分组成,数据域与指针域。链式
顺序存储二叉树必须按完全二叉树的形式存储,将造成存储的浪费。
3、排序方法:
插入排序:直接、折半插入排序
选择排序:简单选择排序 堆排序
交换排序:起泡排序,快速排序
归并排序:
折半插入排序:折半插入排序在寻找插入位置时,不是逐个比较而是利用折半查找的原理寻找插入位置 。待排序元素越多,改进效果越明显。
简单选择排序 :首先从1~n个元素中选出关键字最小的记录交换到第一个位置上。然后再从第2 个到第n个元素中选出次小的记录交换到第二个位置上,依次类推。
时间复杂度为O(n2),最坏情况下需要比较 n(n-1)/2次
适用于待排序元素较少的情况。
冒泡排序(起泡排序)
思想:小的浮起,大的沉底。从左端开始比较。
4、图:节点(图中称顶点)间的连接是任意的。
图的分类:有向图、无向图
权:与图的边或弧相关的数。
网:带权的图。
顶点的度:依附于该顶点的边数或弧数。
出度:(仅对有向图)以该顶点为尾的弧数。
入度:(仅对有向图)以该顶点为头的弧数。
路径:顶点A与顶点C之间存在一条路径。路径上边或弧的数目称为该路径的路径长度。
连通图:在无向图G中,任意两顶点vi、vj都是连通的,则称G是连通图。n个顶点的连通图中边的条数至少为n-1条.