软件设计师考试笔记-(15)
1、数据结构与算法结构(上)
- 数组和矩阵
- 线性表
- 广义表
- 树与二叉树
- 图
- 排序与查找
- 算法基础及常见算法
1.1、数据与矩阵
按行先存储:a+(2*5+3)25 = a+1325
考试中通常考一个矩阵中元素存放数组的通式:
如果没有记住公式可直接使用排除法
A
1.2、数据结构的定义
数据逻辑结构:
- 线性结构
线性表,栈,队列,双队列,串 - 非线性结构
二维数组,多维数组,广义表,树
1.3、线性表
常见存储结构:
- 顺序存储结构 ——顺序表
- 链式存储结构 ——链表——(单链表、循环链表、双向链表)
链表的操作:
1.3.1、线性表两种存储结构对比
1.4、队列与栈
1.5、 广义表
长度:3 深度:2
Head(Head(Tail(Ls1)))
1.6、树与二叉树
1.6.1、树结构
节点的度: 一个节点拥有的子结点数
树的度: 在一个树中最高的节点的度
叶子节点: 没有子结点的节点
分支节点:
内部节点: 既不是根节点也不是叶子节点
父节点:
子结点:
兄弟节点: 同一个父节点
层次:
1.6.2、二叉树
满二叉树: 除了根节点和叶子节点外的所有节点都有两个子结点;
完全二叉树: 除了最底层都是满的,并且从左到右排满;
1.6.3、二叉树遍历
前序遍历: 先根再左后右 1 2 4 5 7 8 3 6
中序遍历: 先左再根后右 4 2 7 8 5 1 3 6
后序遍历: 先左再右后根 4 8 7 5 2 6 3 1
层次遍历: 从高到底,从左到右 1 2 3 4 5 6 7 8
1.6.4、反向构造二叉树
根据给出的前序遍历和后序遍历进行构造二叉树
1.6.5、树转二叉树
1.6.6、查找二叉树
1.6.7、最优二叉树(哈夫曼树)
树的路径长度: 树当中路径的段数
权: 节点值
带权路径长度: 节点路径长度*节点权值
树的带权长度(树的代价): 所有带权路径长度相加
1.6.8、线索二叉树
1.6.9、平衡二叉树
一棵排序二叉树的平衡度越高,查询的效率就越高。
1.7、图
1.7.1、基本概念
1.7.2、图的存储
- 邻接矩阵
- 邻接表
1.7.3、图的变量
1.7.4、 拓扑排序
1.7.5、图的最小生成树
去除多余的边线,使得权值最小;最终使其不能形成环。