![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Klein Wang
Work Hard Stay Humble
展开
-
列出叶结点 (25分)
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。输入格式:首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。输出格式:在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。输入样例:81 -- -0 -2 7- -- -5 -4 6输出样例:4 1 5直接原创 2020-10-23 17:13:35 · 1230 阅读 · 0 评论 -
是否完全二叉搜索树(30 分)
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式:输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。输入样例1:938 45 42 24 58 30 6原创 2020-10-23 16:18:13 · 791 阅读 · 0 评论 -
已知中序和前序构建一棵树并用层序输出
题目:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。注意:在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:71 2 3 4 5 6 74 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 · 207 阅读 · 0 评论 -
顺序表的删除-巧用基础算法查找(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 · 162 阅读 · 0 评论 -
顺序表的删除-巧用基础算法查找(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 · 554 阅读 · 0 评论 -
最大子列和问题 (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 · 205 阅读 · 0 评论