![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++算法数据结构
文章平均质量分 57
通过实战解题的方式,深入学习数据结构
祖安大龙
写博客是为了记录自己遇到的问题
能帮忙解决问题的博客,真的能给人好心情!!!
展开
-
C/C++数据结构——汉诺塔的非递归实现(栈)
题目描述>借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。# 输入格式>输入为一个正整数N,即起始柱上的盘数。# 输出格式>每个操作(移动)占一行,按柱1 -> 柱2的格式输出。# 输入样例............原创 2022-08-17 14:58:02 · 1262 阅读 · 1 评论 -
C/C++数据结构——QQ帐户的申请与登陆(散列表)
实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。# 输入格式>输入首先给出一个正整数N(≤10^5^ ),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的原创 2022-08-16 10:52:56 · 614 阅读 · 0 评论 -
C/C++数据结构——电话聊天狂人(二叉排序树)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人输入格式输入首先给出正整数N(≤10^5^),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。输入样例413005711862 1358862583213505711862 13088.........原创 2022-08-15 11:04:43 · 485 阅读 · 0 评论 -
C/C++数据结构——[NOIP2010]关押罪犯(并查集)
S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S 城Z 市长那里。公务繁忙的Z 市......原创 2022-08-14 11:14:23 · 219 阅读 · 0 评论 -
C/C++数据结构——关键活动(拓扑排序、AOE网、前向星)
假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据............原创 2022-08-14 10:39:38 · 303 阅读 · 0 评论 -
C/C++数据结构——公路村村通(Prim)
公路村村通(Prim)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。这道题我刚开始想着dijkstra也能做,但是忽略了**dijkstra算法是针对源点到某一点的距离**,而**prim算法是针对某一点到生成树的最短距离**,这样原创 2022-08-08 10:21:45 · 811 阅读 · 1 评论 -
C/C++数据结构——哈利波特的考试(dijkstra与前向星)
哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来问原创 2022-08-06 11:17:10 · 265 阅读 · 0 评论 -
C/C++数据结构——六度空间(广搜队列)
“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的一手数原创 2022-08-04 11:11:17 · 531 阅读 · 4 评论 -
C/C++数据结构——列出连通集(深搜和广搜)
广搜就是一个结点下有多个结点可以走,那就先走完输出所有结点,然后再走这些节点的下一个结点,就相当于二叉树的层次遍历,上层结点走完再走下层节点。遍历结点1的下一层,得到集合{0,1,2,7,4}此时这条路径已经走不下去了,没有可以走的地方了,然后就网上退,0这里还有路可以走7,得到集合{0,1,4,2,7}这时候这一条路径完全走完了,走不了了,那就走下一个结点小的没走过的路径,那就是3开始,接下来就不赘述了。按照"{ v1 v2…然后呢这时,0有两个连接的结点,1和2,从小的开始那就是先走1.集合{0,1}.原创 2022-08-03 11:28:21 · 345 阅读 · 0 评论 -
C/C++数据结构——堆中的路径(插入小顶堆)
将一系列给定数字依次插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。## 输入格式:>每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。## 输出格式:>对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。.........原创 2022-08-02 09:48:57 · 829 阅读 · 0 评论 -
C/C++数据结构——是否同一棵二叉搜索树(二叉排序树)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。就是一道二叉搜索树,给你二叉搜索树的序列,然后再给你几个序列,去比较生成的二叉搜索树是否和给你的第一个序列相等,相等输出Yes,不相等输出No。这里无非就是比结点值小的放左边,比节点值大的放右边,但是我用的是c写的,c写结构体指针,可以看原创 2022-08-01 10:33:20 · 144 阅读 · 0 评论 -
C/C++数据结构——树的同构(二叉树)
随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。这题写的优点绕了,主要是给你了树的结点,要构建树就得先找到根节点,根节点也就是没有被指向过的结点,只要用一个数组记录被指向的节点编号,然后找出没有被指的就行。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。如果两棵树是同构的,输出“Yes”,否则输出“No”。...原创 2022-07-31 10:45:54 · 522 阅读 · 0 评论 -
C/C++数据结构——经商(并查集动规)
小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他的精力有限,对应他只能和能够接触到的人交际。小d还很精明,他知道他和谁交际的深获得的利益大,接下来他根据自己的想法又列出来一个利益表,表示他和这些人交际需要耗用多少精力,能够获得的利益值为多少。每组数据的第一行输入三个数,N,M,C,表示这个人际关系网一共有多少个人,关系网的关系数,以及小d的精力值。小明能够接触到的人的编号有234,那么对应接触编号为2的人花费5精力能够获得10的利益值是最优方案。...原创 2022-07-30 10:13:45 · 169 阅读 · 0 评论 -
C/C++数据结构——最优屏障(栈)
M国的地势高低不平,现给出一个数组代表此国家某纬度上均匀分布的N座山的海拔高度H[i](任意两座山高度不同),已知每座山的山顶上都有一座哨塔,若两个哨兵分别位于第i、j(i原创 2022-07-29 10:05:23 · 381 阅读 · 0 评论 -
C/C++数据结构——Rails(栈)
其实只需要存储出栈序列,然后我们依次入栈1-n,每次入栈的时候,都判断栈顶是否和出栈栈序列的队头相等相等则标明可以出栈,直接出栈,一直出栈到和出栈序列不相同时,再开始接着入栈后面的数,根据特性来,没太多时间画图写过程,根据栈的特征来就行,看看代码。简单栈,就是给你一个n,那么入栈序列就是1-n,然后会给你很多个出栈序列,直至序列第一个为0时结束比较,你需要拿出栈序列去作比较,判断入栈序列能否得出给你的出栈序列。链接https//ac.nowcoder.com/acm/problem/14326。......原创 2022-07-28 10:17:21 · 289 阅读 · 0 评论 -
C/C++数据结构——道路建设(最小生成树Prim)
随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易。如果可以的话,输出Yes,否则输出No(两个城市不一定要直接的公路相连,间接公路到达也可以。接下来的n行给出建立公路的成本信息,每行给出三个整数,分别是相连的两个城市v1、v2(0......原创 2022-07-27 10:38:05 · 1433 阅读 · 1 评论 -
C/C++数据结构——挖沟(Kruskal算法+并查集)
用的方法是kruskal算法+并查集,起初这道题想着用prim算法的,用链式前向星去存储路径节点,然后prim算法求出最短路径,但是总是超时,后来看了一下,应为他给出的用例两点之间会有重复的路径,于是将其优化,只保留最短的路径,但是还是不行。由于需要在任意两个点之间传递信息,两个坑之间必须挖出至少一条通路,而挖沟是一件很麻烦的差事,所以胡队长希望挖出数量尽可能少的沟,使得任意两个据点之间有至少一条通路,顺便,尽可能的∑d[i][j]使最小(其中d[i][j]为据点i到j的距离)。),n为结点数,m为边。..原创 2022-07-26 16:13:53 · 289 阅读 · 0 评论 -
穷举算法——奶牛碑文(cow)
尽管小伟看不懂,但是令他高兴的是,C、O、W的顺序形式构成了一句他最喜欢的奶牛单词“COW”。如果COW内穿插了其他字符,只要COW字符出现在正确的顺序,小伟也不介意。碑文似乎是一个神秘古老的语言,只包括三个大写字母C、O和W。例如,CWOW出现了1次COW,CCOW算出现了2次COW,CCOOWW算出现了8次COW。的个数就行,错了几次主要是数组开得太小了,改大一点就ac了,上代码。输出COW作为输入字符串的字串出现的次数(不一定是连续的)。...原创 2019-09-08 15:51:42 · 2477 阅读 · 0 评论 -
2008年NOIP全国联赛提高组 枚举算法——火柴棒等式(c++)
给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。因为火柴最大只给24根,减去+、=两个符号最多只有20根火柴棍,所以能组成的式子不超过范围较小,直接选择穷举一千,通过枚举每个成立的情况记录输出。每组输入数据共一行,是一个整数n(n...原创 2019-09-08 18:26:01 · 1016 阅读 · 1 评论 -
C/C++数据结构——小C的记事本(栈)
就用c++的string类型字符串,然后每次插入或者删除的时候都处理一下,取出栈顶的字符串,然后将插入的字符拼接到字符串后面再入栈就可了。小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手。4、undo(),撤销最近的1(或者)操作,使记事本回到1(或者2)操作之前的状态。以下q行每行描述了一个操作,每行以一个整数t开始(1...原创 2022-07-25 10:59:05 · 433 阅读 · 0 评论 -
C/C++数据结构——虚虚实实(并查集欧拉路)
题目要求一次性走完所有的路径和点,且图是无向的,就要求构成一个无向图的欧拉路,那么度数为奇数的点只有0或者2个,其余的点度数为偶数,也就是起点和终点,满足这个条件就能判断是Zhen还是Xun,但是题目里会给出两个u和v相等的情况,比如用例1输入了1和1,这里要特别判断一下。对于每组数据,如果存在,输出\texttt{“Zhen”}“Zhen”,否则输出\texttt{“Xun”}“Xun”。算卦先生来问你,对于每个他给出的无向图,是否存在一条路径能够经过所有边恰好一次,并且经过所有点?...原创 2022-07-24 15:41:15 · 559 阅读 · 1 评论 -
C/C++数据结构——[NOIP2018]对称二叉树(树状结构)
一棵有点权的有根树如果满足以下条件,则被轩轩称为对称二叉树:二叉树;将这棵树所有节点的左右子树交换,新树和原树对应位置的结构相同且点权相等。 下图中节点内的数字为权值,节点外的 id 表示节点编号。而满二叉树的条件就是二叉树的深度为h,且二叉树有2h−1个节点,这就是满二叉树,也就是一个根节点的左右结点都存在或者这是都不存在的时候我们才需要继续遍历。其实我们只需要找每一个结点的时候,都对结点链接:https://ac.nowcoder.com/acm/problem/21472来源:牛客网...原创 2022-07-23 11:08:43 · 599 阅读 · 0 评论 -
C/C++数据结构——[USACO 2009 Ope S]Cow Line(双端队列)
链接https来源牛客网。Farmer John's N cows (conveniently numbered 1..N) are forming a line. The line begins with no cows and then, as time progresses, one by one, the cows join the line on the left or right side. Every once in a while, some number of cows on the le原创 2022-07-22 11:34:18 · 296 阅读 · 0 评论 -
C/C++数据结构——括号画家
这里的话就是要注意美观的匹配序列,一个空串也美观,长度为1,两个合法的括号字段连接在一块也是美观的,遇到左括号就入栈,然后遇到右括号,判断和栈顶的左括号是否匹配,匹配就出栈,长度+2,如果不匹配就说明栈中所有的左括号和当前位置后的右括号都是不美观的,则判断最长括号长度进行存储。若括号序列A是美观的,则括号序列(A)、[A]、{A}也是美观的;若括号序列A、B都是美观的,则括号序列AB也是美观的。现在Candela想在她绘制的括号序列中,找出其中连续的一段,满足这段子序列是美观的,并且长度尽量大。...原创 2022-07-21 23:12:25 · 664 阅读 · 8 评论 -
C/C++数据结构——字典序最小的中序遍历
这是牛客竞赛里关于树形结构的练习,难点就在于什么时候交换,其实题目给出的要求已经很简单了,都是数字且左右子树都规定,建树后,只需要比较结点的左右子树的最小值,如果左子树的最小值大于右子树的最小值,那么就交换,中序遍历按照左中右的顺序遍历,所以左边的先遍历,左子树的结点值如果大的话那么字典序必然大。给一个有根二叉树,可以无限次的交换任意节点的左右子树,问最少交换多少次使得该树的中序遍历的字典序最小?接下来N行,每行两个整数ai,bi.ai表示第i个节点的左儿子,bi表示第i个节点的右儿子...........原创 2022-07-21 10:05:59 · 559 阅读 · 0 评论 -
C/C++数据结构——[NOIP2004]FBI树(二叉树)
简单二叉树,要注意的点无非就是创建二叉树的时候,注意字符串的起始位置和结束的位置,每个节点如果字符串长度大于2就要对半拆分开来,左边的做左子树,右边的一半做右子树,然后继续递归创建,然后后序遍历的时候要注意判断该结点是F结点B结点还是I结点,具体的上面题目描述都有说明,NOIP普及组的题目,难度不大。FBI树是一种二叉树[1],它的结点类型也包括F结点,B结点和I结点三种。我们可以把由“0”和“1”组成的字符串分为三类全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。...原创 2022-07-20 10:31:16 · 439 阅读 · 0 评论 -
C++数据结构——直接插入排序(图文)
直接插入排序是比较简单的排序算法,它主要是将我们要排序的序列分成两个部分,一个有序一个无序,然后将无序序列中的值依次插入到有序序列中。这么讲如果不能理解,我们拿例子去讲,假如有序列8 7 2 1 5 9 3这么一个序列,如下表所示。我们要将这个序列进行升序排序,接下来演示插入排序的过程。习题8-1 直接插入排序给定一个整数序列,请按非递减序输出采用直接插入排序的各趟排序后的结果。输入格式:测试数据有多组,处理到文件尾。每组测试数据第一行输入一个整数n(1≤n≤100),第二行输...原创 2022-06-11 15:42:33 · 2148 阅读 · 1 评论 -
C++数据结构——小明的通讯录(哈希表线性探测法)
小明的通讯录小明上中学了,为了方便和家里以及同学联系,爸爸终于给小明买了一台手机。该手机的存储容量可以扩充,因此,可以存储的电话号码数量没有限制。小明的手机有一个特殊的功能,对于打进或拨出的电话,只要是新号码,手机均会自动进行储存。给定小明在一个月的使用期间的手机通讯记录,请给出此时此刻小明的手机中存储了多少个电话号码。哈希表进行存储,使用线性探测法解决冲突问题。这个代码很简洁,我偷懒这么写的,就是使用STL的map容器,map是红黑树,其实也可以用set做,set也是红黑树,是一种自平衡的二叉搜原创 2022-06-05 21:14:51 · 669 阅读 · 1 评论 -
C++数据结构——判断是否二叉排序树
判断是否二叉排序树根据带虚结点的先序序列建立二叉树,然后判断其是否为二叉排序树。输入格式:测试数据有多组,处理到文件尾。每组测试数据在一行中输入一个数字字符串(不含'0'且长度不超过20),表示二叉树的先序遍历序列,其中字符*表示虚结点(对应的子树为空)。解题思路首先先构建二叉树,根据样例输入,构建二叉树,因为是先序遍历,所以,按照中左右的顺序插入就行,*号不执行插入。然后我们再中序遍历,去判断是否为二叉搜索树。...原创 2022-06-05 21:07:06 · 872 阅读 · 0 评论 -
C++数据结构——旅游规划(Floyd算法详解)
旅游规划有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。Floyd算法通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。 Floyd算法的时间复杂度是O(n^3),它能够计算任意两点之间的最短路径,利用动态规划的思想。我们根据题目去学习一下这个算法。C++数据结构——旅游规划(Floyd算法详解)...原创 2022-06-04 14:21:13 · 1673 阅读 · 0 评论 -
C++数据结构——还是通畅工程(最小生成树Prim)
例6.7.2 还是畅通工程某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。输入格式:测试数据有多组。每组测试数据的第一行输入村庄数目N ( N<100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离(<1000)。简单起见,村庄从1到N原创 2022-05-29 20:37:33 · 349 阅读 · 0 评论 -
C++数据结构——习题6-5 最小生成树(Prim算法)
习题6-5 最小生成树省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。已知村庄数N和可建道路数M,设初始状态下任意村庄之间没有路,请编写程序,根据输入的两村庄间修建道路的费用情况,计算这些村庄畅通所需要的最低成本。输入格式:测试数据有多组。每组测试数据第1行输入村庄数目N ( 1< N < 11 )和道路数M;随后的M行输入村庄间道路的成本,每行给3个正整数,分别是两个村庄的编号(从1编号到N),修建此两村庄间原创 2022-05-23 16:33:15 · 2375 阅读 · 0 评论 -
C++数据结构——练习7-3 气球升起来
HLOJ 9580,练习7-3 气球升起来程序设计竞赛时,赛场升起各色气球多么激动人心呀!志愿者送气球忙得不亦乐乎,观战的某人想知道目前哪种颜色的气球送出最多。输入格式:测试数据有多组,处理到文件尾。每组数据先输入一个整数n(0<n≤5000)表示分发的气球总数。接下来输入n行,每行一个表示颜色的字符串(长度不超过20且仅由小写字母构成)。输出格式:对于每组测试,输出出现次数最多的颜色。若出现并列的情况,则只需输出ASCII码值最小的那种颜色。输入样例:3pinkred原创 2022-05-22 21:10:08 · 2125 阅读 · 0 评论 -
C++数据结构——习题7-2 二叉排序树(二叉搜索树)
HLOJ 9576,习题7-2 二叉排序树输入一个整数关键字序列,生成一棵用链式存储结构存储的二叉排序树,对该二叉排序树能进行查找和插入结点的操作,并对该二叉排序树中结点的关键字按递增和递减顺序输出。要求依次完成以下工作:(1) 以这n个整数生成(建立)一棵用链式存储结构存储的二叉排序树;(2) 按递增顺序输出该二叉排序树中的整数(关键字); (3) 输入一个整数key1,对该二叉排序树进行查找,给出“find”(找到)或“not find”(没找到)的信息;(4) 输入一个整数key2,若该二原创 2022-05-22 21:06:46 · 1894 阅读 · 0 评论 -
C++数据结构——畅通工程
畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?输入格式:测试数据有多组。每组测试数据的第一行输入两个正整数,分别是城镇数目N(N<1000)和道路数目M;随后输入M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。简单起见,城镇从1到N编号。注意:两个城市之间可以有多条道路相原创 2022-05-18 13:42:47 · 741 阅读 · 0 评论 -
C++数据结构——玩转二叉树
玩转二叉树给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:71 2 3 4 5 6 74 1 3 2 6 5 7原创 2022-05-16 15:06:24 · 558 阅读 · 0 评论 -
C++数据结构——中序遍历二叉树
中序遍历二叉树按完全二叉树的层次遍历给出一棵二叉树的遍历序列(其中用0表示虚结点),要求输出该二叉树的深度及中序遍历该二叉树得到的序列。输入格式:首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据首先输入一个正整数n(n≤1000),代表给出的二叉树的结点总数(当然,其中可能包含虚结点)。结点编号均为正整数,且各不相同。 然后输入n个正整数,表示按完全二叉树(即第1层1个结点,第2层2个,第3层4个,第4层有8个……)的层次遍历给出的二叉树遍历序列,如果某个结点不存在(虚结原创 2022-05-13 16:51:47 · 2609 阅读 · 2 评论 -
C++数据结构——计算二叉树最大的宽度
计算二叉树最大的宽度根据带虚结点的先序序列建立二叉树,计算该二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)并输出。输入格式:测试数据有多组,处理到文件尾。每组测试数据在一行中输入一个字符串(不含空格且长度不超过80),表示二叉树的先序遍历序列,其中字符*表示虚结点(对应的子树为空)。输出格式:对于每组测试,输出二叉树的最大宽度。输出格式为:“maxWidth: max”,其中max为二叉树的最大宽度值。输入样例:HDA**C*B**GF*E***-+a**原创 2022-05-11 15:29:26 · 3360 阅读 · 0 评论 -
C++数据结构——层次遍历
层次遍历给定二叉树的包含虚结点的先序遍历序列信息,按层次顺序给出遍历的结果。输入格式:首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据在一行中输入一个字符串(不含空格且长度不超过80),表示二叉树的先序遍历序列(其中@表示虚结点)。输出格式:对于每组测试,输出层次遍历的结果。输入样例:1ABD@@EG@@@C@F@@输出样例:ABCDEFG代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB解题代码#include<b原创 2022-05-11 11:32:17 · 1598 阅读 · 0 评论 -
C++数据结构—— 统计二叉树中度为2的结点个数
统计二叉树中度为2的结点个数根据带虚结点的先序序列建立二叉树,计算其度为2的结点个数后输出。输入格式:测试数据有多组,处理到文件尾。每组测试数据在一行中输入一个字符串(不含空格且长度不超过80),表示二叉树的先序遍历序列,其中字符*表示虚结点(对应的子树为空)。输出格式:对于每组测试,输出所建立的二叉树中度为2的结点个数。输入样例:HDAC*BGFE**-+axb-cd/ef输出样例:25代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB解题代码原创 2022-05-10 09:04:30 · 5699 阅读 · 2 评论