- 博客(6)
- 收藏
- 关注
原创 列出叶结点 (25分)
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。 输入格式: 首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。 输出格式: 在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。 输入样例: 8 1 - - - 0 - 2 7 - - - - 5 - 4 6 输出样例: 4 1 5 直接
2020-10-23 17:13:35
1332
原创 是否完全二叉搜索树(30 分)
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。 输入格式: 输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。 输出格式: 将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。 输入样例1: 9 38 45 42 24 58 30 6
2020-10-23 16:18:13
868
原创 已知中序和前序构建一棵树并用层序输出
题目:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 注意: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 输入样例: 7 1 2 3 4 5 6 7 4 1 3 2 6 5 7 输出样例: 4 1 6 3 5 7 2 代码实现: #include<iostream> using namespace std; struct node { int data;
2020-10-15 15:52:05
261
原创 顺序表的删除-巧用基础算法查找(2)
已知长度为n的线性表A采用顺序储存结构,请写一时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。(题目要求元素间相对顺序不变) 分析:使用指针j遍历list找到不等于item的元素,找到item的元素跳过。使用i指针保存不等于item的元素。最后list元素的个数是i。 代码实现: int i=0,j=0; while(j<curLength) { if(aList[j]==item) j++; else aList[i++]=aList[j++]; }
2020-09-06 16:44:39
239
原创 顺序表的删除-巧用基础算法查找(1)
已知长度为n的线性表A采用顺序储存结构,请写一时间复杂度为O(n),空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。(题目未要求元素间相对顺序不变) 分析:若使用普通删除算法则其时间复杂度为O(n^2)。设置两个指针i,j分别指向小下标端和大下标段,其相向移动。i要寻找等于item的元素,j要寻找不等于item的元素。然后将j所指向的元素覆盖i所指向的元素。i与j继续相向移动,当i>j时跳出循环。 代码实现: Int i=0,j=curLength-1; while(i&l
2020-09-06 16:31:02
635
转载 最大子列和问题 (20分)
给定K个整数组成的序列{ N1, N2, …, NK },“连续子列”被定义为{ Ni , Ni+1, …, Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。 本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下: 数据1:与样例等价,测试基本正确性; 数据2:102个随机整数;
2020-09-06 10:59:09
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅