![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构-浙大
周文略
这个作者很懒,什么都没留下…
展开
-
04-树4 是否同一棵二叉搜索树
分析: 对于给定的初始插入序列和待检查序列来说,第一个数一定是根结点;之后比根结点小的数组成的序列(相对位置不变)就是左子树,同理大的就是右子树 根据分析1中的左右子树序列,第一个数又分别是他们的根结点 综上,只需不停递归,直到左右子树至少有一方无左右子树为止;在递归过程中,若对应的左子树序列出现了相应位置元素不同的情况,那么就不是同一棵树 代码如下 #include <iostrea...原创 2019-11-30 23:06:46 · 104 阅读 · 0 评论 -
03-树3 Tree Traversals Again
分析: 题意:给出一棵二叉树的中序遍历步骤(栈思路),输出后序遍历结点 根据中序思路可知,当push一个结点时,若上一步是push,则该结点是上一步push结点的左子树;若上一步是pop,则该结点是pop结点的右子树 思路: 按照分析2梳理整个树的每个结点及其左右结点 将根节点放进一个栈中,重复执行步骤3,直到栈为空 判断栈顶结点,若该结点无左右子树,该结点出栈; 若该结点有左子树,左子树...原创 2019-11-26 11:14:53 · 189 阅读 · 0 评论 -
02-线性结构4 Pop Sequence
题意: 第一行输入三个整数M N K,分别代表栈容量,进栈序列长度,待核实的出栈序列行数 随后K行输入出栈序列,要求核实其是否是一个可能的出栈序列 分析: 根据题意,出栈元素只能是从1到N 可以根据当前的出栈元素,判断栈内剩余元素数量以及栈顶元素 又通过剩余元素数量及栈顶元素判断下一个出栈元素是否符合栈要求 代码如下 #include <iostream> using nam...原创 2019-11-21 10:10:10 · 146 阅读 · 0 评论 -
03-树1 树的同构
思路:基本参照慕课上的浙大数据结构思路来,判断同构的函数处做了一些小修改 代码如下 #include <iostream> using namespace std; typedef struct tree{ char ch; int Left, Right; }Tree; Tree T1[10], T2[10]; int CreatTree(Tree T[]); bool ...原创 2019-11-21 09:49:42 · 85 阅读 · 0 评论 -
02-线性结构3 Reversing Linked List
分析: 用结构体数组来模拟实现链表,每个元素的下标代表其地址 新开一个数组,按顺序存储一个完整链表中的所有结点 再开一个数组,将2中数组的元素按每K个反向存储的方式存储,最后输出 代码如下 #include <iostream> using namespace std; struct Node{ int ad, data, next; }; struct Node Nd[10...原创 2019-11-05 12:21:07 · 112 阅读 · 0 评论 -
02-线性结构1 两个有序链表序列的合并
分析: 题目要求写一个函数,将递增链表L1和L2合并为一个非递减函数 比较两链表的首结点,选其中最小值放入有序链表中,然后将剩下的值和最小值的下一个结点值比较 重复2,直到有一条链表的所有结点都已排序 将另外一条链表的剩余结点全部接上 思路: 创建一个结点,作为最终链表的头结点 再创建三个结点指针,分别指向已排序链表的尾结点,链表L1,L2的未排序部分的首结点 根据分析2,3,4写入代码 ...原创 2019-10-31 10:38:32 · 124 阅读 · 0 评论 -
01-复杂度1 最大子列和问题
根据中国MOOC大学上浙大的数据结果课程给出的 在线处理 算法,在此对该算法的思路再进行一遍梳理 题目要求求出子序列的最大和,那么如何确定该子序列呢 首先,对于随便一个子序列,假设当前序列和ThisSum已经小于0,那么对于它的前后任何一个序列,都是不应该把它加上去的,因为这样之后会让新的序列和减小; 所以,序列和为负数的子序列需要抛弃 换句话说,序列和为负数的子序列,不能参与到其他序列中,它...原创 2019-10-26 20:22:49 · 117 阅读 · 0 评论 -
01-复杂度2 Maximum Subsequence Sum
该题和 01-复杂度1 最大子列和问题 类似,题目要求输出给的序列的子序列最大和,另外增加了几点要求 如果输入序列全是负数,和输出0,还要输出第一个和最后一个元素 如果有不只一串子序列的和是最大的,那么需要输出这些子序列的最左端和最右端中的最小索引值对应的值(也就是第一个满足的字串的左右值) 分析: 根据 在线处理 算法找最大子序列,在找的过程中,如果ThisSum为0,说明开始找新的一段...原创 2019-10-26 22:11:06 · 171 阅读 · 0 评论