数据结构与算法基础——概要

基本数据结构

1.1线性表
(1)顺序表
(2)链表
(3)链表的类别:单链表,循环链表,双链表
(4)链表的操作:结点的删除/插入
(5)顺序表与链表的比较

(6)栈:先进后出(栈顶,栈底)
(7)队列:先进先出(队头,队尾)
循环队列

1.2树和二叉树


1.树的一些基本概念
结点的度,树的度
叶子结点,分支结点,内部结点
父结点,子结点,兄弟结点
层次

总结点数=总度数+1


2.树的遍历
前序遍历
后序遍历
层次遍历


3.二叉树的一些相关概念和特性
满二叉树,完全二叉树(n-1层是满树,最后一层是从左到右连续排列),非完全二叉树
二叉树的重要特性:
a.在二叉树的第i层上最多有2i-1个结点(i >=1)
b.深度为k的二叉树最多有2k-1个结点(k >=1)
c.对任何一棵二叉树,如果其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1
d.如果对于一棵有n个结点的完全二叉树的结点按层序编号,则对任一结点i(1<= i <= n)有:
如果i=1,则结点i无父结点,是二叉树的根;如果i>1,则父结点是i/2向下取整
如果2i>n,则结点i为叶子结点,无左子结点;否则,其左子结点是结点2i
如果2i+1>n,则结点i无右子结点,否则,其右子结点是结点2i+1
e. n0=n2+1


4.二叉树的遍历
前序遍历:先访问根结点,再访问子结点
中序遍历:先访问左结点,再访问根结点,再访问右结点
后序遍历:先访问子结点,再访问根结点
层次遍历:按层次


5.树和二叉树的转换
树的孩子结点,转为二叉树的左子结点,树的兄弟结点,转为右子结点。
方法:一个结点有n多个子结点,只留最左边结点(左子结点),其余的边删除;添加平行线(右子结点),把所有的兄弟结点连起来。
转换后的二叉树和树,前序遍历相同,二叉树的中序遍历和树的后序遍历相同


6.查找二叉树(二叉排序树)


7.最优二叉树(哈夫曼树)
树的路径长度:同样结点的树,完全二叉树的路径长度是最短的
树的带权路径长度(树的代价):叶子结点带权路径长度之和
构造哈弗曼树
哈夫曼树只有叶子结点和度为2的结点


8.线索二叉树
Lbit Lchild Data Rchild Rbit
Lbit/Rbit=0,Lchild是通常的指针
Lbit/Rbit=1,Lchild是线索
将二叉树转化为前序/中序/后序线索二叉树


9.平衡二叉树
构造平衡二叉树(平衡树调整):
(1)LL型(单向右旋平衡处理)
(2)RR型(单向左旋平衡处理)
(3)LR型(双向旋转,先左后右)
(4)RL型(双向旋转,先右后左)


1.3图
1.图的基本概念
(1)图的构成
(2)无向图与有向图
(3)顶点的度
(4)子图
(5)完全图(无向图/有向图)
(6)路径和回路
(7)连通图和连通分量
(8)网络
(9)图的存储(邻接矩阵,邻接表)


2.图的遍历和最小生成树
(1)图的遍历
深度优先(先根遍历/前序遍历)
广度优先(层次遍历)
(2)图的最小生成树
普里姆算法:从点着手,不断选入
克鲁斯卡尔算法:从边着手,选最小边
注意:不要形成图(不要有回路),选到n-1条边为止,形成最小生成树


3.拓扑排序和关键路径
(1)AOV网络
我们把用有向边表示活动之间开始的先后关系,这种有向图成为用顶点表示活动网络,简称AOV网络
(2)拓扑排序
入度0的结点,删除其出度,然后再找入度为0
(3)关键路径(最长路径)
AOE网络
顶点j事件的最早发生时间Ve(j)
顶点j事件的最迟发生时间Vl(j)
活动ai的最早开始时间e(i)
活动ai的最迟开始时间l(i)

从源点开始向汇点递推(max,取最大值)
从汇点开始向源点递推(汇点的Ve=Vl,min,取最小值)

关键路径
e(i)=l(i)
顶点Ve(j),Vl(j),边e(i),l(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值