数据结构大题
数据结构真题部分大题
第五章树与二叉树
2014年求二叉树带权路径长度(WPL)
给定一个二叉树T,采用二叉链表存储,结构为(left-weight-right),求出T的WPL(带权路径长度)
求WPL就是求各叶节点的权值与其路径长度乘积然后求和
所以对于当前节点进行判断,若为叶节点则返回其权值与路径(也就是当前深度)的乘积,否则可以向下递归求其左右子树 最后层层返回
代码
|
|
当节点只有一个孩子时,会传入空指针,导致空指针异常,王道书上写到 作为408算法题,不要求考虑边界条件.只要思想正确,代码逻辑正确,即可满分,无非就是加上if (p == NULL)return 0;
2017年求表达式树转中缀表达式
给定一个表达式树T,输出等价的中缀表达式,如下
|
|
输出(a+b) * (c*(-d))
对中序遍历进行改造即可,注意到除根节点符合所表达的算式外,任意子树都需要左右括号,所以进行左子树遍历前 需要加左括号 (,进行右子树遍历后需要加右括号 )
代码
|
|
本题主要在于考虑清楚加括号逻辑(除根节点外,任意分支节点所表达的运算都需要加括号)
本题本质是改造中序遍历。根结点不加括号,非根的分支结点所代表的子表达式需要加括号。若遇到叶子结点,直接输出操作数; 若遇到运算符结点,则按照“左子树、根、右子树”的顺序输出。对于单目运算符,例如 -d,其左子树可能为空,也可以用同样的递归逻辑处理。
第六章图
2021邻接矩阵无向图度的问题
给定一个无向连通图,采用邻接矩阵存储,求出是否有EL路径存在
EL描述如下:
度位奇数的顶点个数为不大于2的偶数,则存在EL路径
本题送分题
统计图中符合要求顶点个数,看是否符合个数为2或0(不超过2的偶数为0和2)
代码
|
|
邻接矩阵中,某一行(列)中不为0元素的个数就是对应顶点的度,所以第一个for循环遍历所有顶点,每次循环里依次遍历对应顶点的度, 最后判断count数,所以本题空间复杂度为O(1)不需要额外空间,时间复杂度为O()
2023邻接矩阵有向图度的问题
给定一个有向图,采用邻接矩阵存储,求出图中出度大于入度的顶点总数且输出所有这些点
遍历各顶点,各顶点再遍历行(出度),列(入度),分别统计,再比较
代码
|
|
邻接矩阵中,某一行(列)中不为0元素的个数就是对应顶点的度,所以第一个for循环遍历所有顶点,每次循环分两次判断对应顶点的出度和入度, 本题空间复杂度为O(1)不需要额外空间,时间复杂度为O()
2024邻接矩阵有向图的拓扑序列问题
给定一个有向图,采用邻接矩阵存储,求该图是否有唯一的拓扑结构
通过一个入度数组,每次找出入度唯一为0的顶点删除,并让其所有临接顶点的入度-1,重复此过程,若进行了此图的顶点个数次,则意味着存在唯一的拓扑结构
代码
|
|
本题关键理顺求入度逻辑,以及删除一个顶点后,其余顶点入度的变化