恶补数据结构、概率day2
大学由于过度松懈导致数据结构、计算机网络知识薄弱,现对专项知识进行恶补 通过牛客网、简书、****来完善自己的知识丰富度,如有错误请读者指出,感谢。
1、题:完全二叉树问题
二叉树:
1、特点是与每个节点关联的子节点至多有两个(可为0,1,2),即一个节点至多有两颗子树
2、二叉树的两颗子树分别称作它的左子树和右子树
满二叉树:
1、树中每个分支节点(非叶节点)都有两棵非空子树
2、深度为 k 且有 2^k-1个 结点的二叉树称为满二叉树
完全二叉树:
1、只允许最后一层有空缺结点且空缺在右边,即叶子结点只能在层次最大的两层上出现;
2、设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边
3、满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树
注: 由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到
n0=(n+1)/2 或 n0=n/2
题: 一颗完全二叉树上有1001个结点,其叶子结点的个数是___
答:
叶子结点数是: n0=[n/2](其中[]表示上取整 )
2、题:二路归并排序
二路归并排序:
1、二路归并排序主要运用了“分治算法”,分治算法就是将一个大的问题划分为n个规模较小而结构相似的子问题。
2、这些子问题解决的方法都是类似的,解决掉这些小的问题之后,归并子问题的结果,就得到了“大”问题的解。
3、二路归并排序主旨是“分解”与“归并”
eg:
归并排序过程:
合并两个有序数组:
二路归并排序的时间复杂度为____
3、题:子串
概念:
串中任意个连续的字符组成的子序列称为该串的子串
计算方法:
ab的子串: a、b、ab、空字串
abc的子串: a、b、c、ab、ac、abc、空子串
4、二叉树基本概念:
二叉树:二叉树是每个节点最多有两个子树的树结构。
根节点:一棵树最上面的节点称为根节点。
父节点、子节点:如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子 节点。
叶子节点:没有任何子节点的节点称为叶子节点。
兄弟节点:具有相同父节点的节点互称为兄弟节点。
节点度:节点拥有的子树数。上图中,13的度为2,46的度为1,28的度为0。
树的深度:从根节点开始(其深度为0)自顶向下逐层累加的。上图中,13的深度是1,30的深度是2,28的深度是3。
树的高度:从叶子节点开始(其高度为0)自底向上逐层累加的。54的高度是2,根节点23的高度是3。
平衡二叉树: 左右子树的高度相差不超过 1 的树为平衡二叉树。
性质:1、可以是空树
2、假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,丙炔高度之差的绝对值不超过1
平衡因子: 左子树深度—右子树深度 = 平衡因子
5、题:数据库系统和文件系统
数据库系统与文件系统的主要区别:
文件系统不能解决数据冗余和数据独立问题,而数据库系统可以解决
6、题:栈
和顺序栈相比,链栈有一个比较明显的优势是 ___
通常不会出现栈满的情况
★7、深度优先算法、广度优先算法(未解决)
题: 当各边上的权值____时,BFS算法可用来解决单源最短路径问题
答:
若所有边的长度相等,广度优先搜索算法是最佳解——亦即它找到的第一个解,距离根节点的边数目一定最少;但对一般的图来说,BFS并不一定回传最佳解。这是因为当图形为加权图(亦即各边长度不同)时,BFS仍然回传从根节点开始,经过边数目最少的解;而这个解距离根节点的距离不一定最短。这个问题可以使用考虑各边权值,BFS的改良算法 成本一致搜寻法 ( en:uniform-cost search )来解决。然而,若非加权图形,则所有边的长度相等,BFS就能找到最近的最佳解。
8、题:求循环队列中元素个数
设循环队列的容量为50(序号从0到49),现经过一系列的入队和出队运算后,有 front=16,rear=5(rear指向队尾元素的后一位置),当前循环队列中元素个数为 ___
求循环队列中的元素个数的公式为:
rear指向队尾元素的后一位置:
(rear-front+size)%size,size是循环队列的容量 。
front、rear分别指向队头和队尾元素
m = (rear - front + 1 + maxSize) % maxSize。
9、题:平均时间复杂度
对于排序算法,经常关注的是其时间复杂度和稳定性。下列排序算法中平均时间复杂度是O(nlogn)且稳定的是 ____
10、题:主分量分析(PCA)
**题:**下面关于主分量分析(PCA)的描述错误的是___
答:
1、PCA是一种线性、非监督、全局的降维算法。
2、原始数据进行特征提取,可能得到比较高维的特征向量,所以需要降维降低训练复杂度。
11、题:回滚段(未解决)
题:
关于回滚段的使用,下列哪种分配方法比较合适
给系统中每个事务分配回滚段
给短事务分配小回滚段
给长事务分配回大滚段
给长事务分配小回滚段
回滚段:
回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值), 回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息
12、题:判断有向图是否有环
能判断有向图是否有环的是:
DFS
拓扑排序
13、hash碰撞解决方法
哈希函数构造:
1:直接寻址法;
2:取模法;
3:数字分析法;
4:折叠法;
5:平方取中法;
6:除留余数法;
7:随机数法。
处理冲突主要方法有:
1:开地址法
- 线性探测再散列
- 二次探测再散列
- 伪随机再散列
2:链地址法
3:再散列法
4:建立一个公共溢出区