二叉树遍历问题**** Dear 丶 2023-02-23 05:26 21阅读 0赞 我们知道一棵二叉树的遍历方式有三种,分别是先序遍历、中序遍历和后序遍历,我们还知道一棵二叉树的先序遍历和中序遍历可以唯一确定一颗二叉树,同样一棵二叉树的中序遍历和后序序遍历也可以唯一确定一颗二叉树,因此我们可以解决“给定一棵二叉树的先序遍历和中序遍历求解后序遍历”这样的问题,也可以解决“给定一棵二叉树的中序遍历和后序遍历求解先序遍历”这样的问题。经过分析我们知道给定二叉树的先序遍历和后序遍历是不能唯一确定一棵二叉树的! ![在这里插入图片描述][format_png] 上面的图是一颗二叉树,如果仅仅给定先序遍历:ABDCEFG和后序遍历:DBEGFCA,那么除了上面的二叉树以外,还可以是以下三棵二叉树: ![在这里插入图片描述][format_png 1] ![在这里插入图片描述][format_png 2] ![在这里插入图片描述][format_png 3] 那么如果给定二叉树的先序遍历和后序遍历,到底可能有几棵二叉树呢? 本问题有多组测试数据,第一行是测试数据的组数n,紧接着是n组测试数据。每组测试数据有两行,分别表示二叉树的先序遍历和后序遍历,每个结点用大写字母表示,输入保证数据是正确的。 对于每一组输入,对应的输出只有一行,即符合给定的先序遍历和后序遍历这样条件的二叉树的棵数。 Sample Input 1 ABDCEFG DBEGFCA Sample Output 4 代码 #include<bits/stdc++.h> using namespace std; typedef long long ll; char a[1010],b[1010]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%s%s",a,b); int len=strlen(a); ll cnt=0; for(int i=0;i<len-1;i++) { for(int j=1;j<len;j++) { if(a[i]==b[j]&&a[i+1]==b[j-1]) cnt++; } } cout<<(1ll<<cnt)<<endl; } } [format_png]: https://imgconvert.csdnimg.cn/aHR0cDovLzEzOS4xOTYuMTQ1LjkyL2ltYWdlcy9uaXQvJUU0JUJBJThDJUU1JThGJTg5JUU2JUEwJTkxJUU5JTgxJThEJUU1JThFJTg2JUU5JTk3JUFFJUU5JUEyJTk4MS5wbmc?x-oss-process=image/format,png [format_png 1]: https://imgconvert.csdnimg.cn/aHR0cDovLzEzOS4xOTYuMTQ1LjkyL2ltYWdlcy9uaXQvJUU0JUJBJThDJUU1JThGJTg5JUU2JUEwJTkxJUU5JTgxJThEJUU1JThFJTg2JUU5JTk3JUFFJUU5JUEyJTk4Mi5wbmc?x-oss-process=image/format,png [format_png 2]: https://imgconvert.csdnimg.cn/aHR0cDovLzEzOS4xOTYuMTQ1LjkyL2ltYWdlcy9uaXQvJUU0JUJBJThDJUU1JThGJTg5JUU2JUEwJTkxJUU5JTgxJThEJUU1JThFJTg2JUU5JTk3JUFFJUU5JUEyJTk4My5wbmc?x-oss-process=image/format,png [format_png 3]: https://imgconvert.csdnimg.cn/aHR0cDovLzEzOS4xOTYuMTQ1LjkyL2ltYWdlcy9uaXQvJUU0JUJBJThDJUU1JThGJTg5JUU2JUEwJTkxJUU5JTgxJThEJUU1JThFJTg2JUU5JTk3JUFFJUU5JUEyJTk4NC5wbmc?x-oss-process=image/format,png
相关 二叉树遍历问题**** 我们知道一棵二叉树的遍历方式有三种,分别是先序遍历、中序遍历和后序遍历,我们还知道一棵二叉树的先序遍历和中序遍历可以唯一确定一颗二叉树,同样一棵二叉树的中序遍历和后序序遍历也可 Dear 丶/ 2023年02月23日 05:26/ 0 赞/ 22 阅读
相关 二叉树 二叉树遍历 通过二叉树遍历求得二叉树 什么是二叉树 > > 二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且 偏执的太偏执、/ 2022年12月04日 01:08/ 0 赞/ 415 阅读
相关 遍历二叉树 1. 二叉树的遍历 遍历定义 ——顺着某一条搜索路径巡访二叉树中的结点,使得 每个结点均被访问一次,而且仅被访问一次。 “访问”的含义可以很广,如:输出结点的信息等。 迈不过友情╰/ 2022年08月22日 14:26/ 0 赞/ 528 阅读
相关 遍历二叉树 遍历二叉树 二叉树是由3个基本单元组成的:根结点、左子树和右子树。 若限定先左后右的顺序,则遍历二叉树只有三种情况分别称为先(根)序遍历、中(根)序遍历和后(根)序遍 比眉伴天荒/ 2022年06月08日 00:48/ 0 赞/ 400 阅读
相关 遍历二叉树 遍历二叉树 今天我们学习了二叉树,现在我就基于二叉树的递归定义来说一说遍历二叉树的三种方法:先序、中序和后序。 根据二叉树的递归定义可知,二叉树是由3个基本单元组成:根结点 傷城~/ 2022年06月05日 08:11/ 0 赞/ 431 阅读
相关 二叉树遍历 include<iostream> include<queue> using namespace std; //二叉树结点 ╰+攻爆jí腚メ/ 2022年06月04日 05:35/ 0 赞/ 395 阅读
相关 二叉树遍历 前序遍历(左中右)ABDGHCEIF ![前序遍历][70] 中序遍历(左根右)GDHBAEICF![中序遍历][70 1] 后序遍历(左右根)GHDBIEFCA![ Bertha 。/ 2022年05月11日 13:48/ 0 赞/ 475 阅读
相关 二叉树遍历 二叉树是数据结构中很重要的一个章节,很多同学反应很难,今天我就把我平时的经验给大家讲解一下,今天讲一下二叉树的遍历 工具/原料 ● 数据结构知识 ● 了解树的定义 爱被打了一巴掌/ 2022年05月10日 03:08/ 0 赞/ 390 阅读
相关 遍历二叉树 用递归的方法实现前序遍历,中序遍历,后序遍历: 用递归的方法遍历的时候,其实每个节点都遍历了三遍,根据打印时间的不同,即可实现前序中序及后续,这就是三个遍历代码一样而打印顺序 浅浅的花香味﹌/ 2021年11月01日 15:28/ 0 赞/ 539 阅读
还没有评论,来说两句吧...