首页 > 其他分享 >2001年NOIP普及组] 求先序排列

2001年NOIP普及组] 求先序排列

时间:2022-08-15 08:11:50浏览次数:64  
标签:遍历 求先序 NOIP int 中序 len bk 2001 节点

2001年NOIP普及组] 求先序排列

  • 分析:根据题意,已知中序遍历和后序遍历求先序遍历,很显然是用递归求解。我们知道后序遍历中根节点是最后一个,所以可以首先确定根节点的位置,然后通过根节点找中序遍历中的根节点,根据中序遍历就可以确定左子树和右子树节点的个数,再看是否有左子树和右子树,如果有用递归继续往下寻找,依此类推,直到全部遍历完。要注意的一点序列长度区间是左闭右开。
  • #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    char b[10],c[10];
    int len;
    void work(int bl,int br,int cl,int cr)
    {
    cout<<c[cr-1];//打印根节点 左闭右开
    int bk;//中序遍历中根节点的位置
    for(int i=bl;i<br;i++)//左闭右开
    {
    if(b[i]==c[cr-1])//中序遍历根节点
    {
    bk=i;
    break;
    }
    }
    int ln=bk-bl;//左子树的节点个数
    int rn=br-1-bk;//右子树节点个数 (左闭右开)
    if(ln>0)//有左子树
    {
    work(bl,bl+ln,cl,cl+ln);//先中序 再后序
    }
    if(rn>0)//有右子树
    {
    work(bk+1,bk+1+rn,cr-1-rn,cr-1);//先中序 再后序
    } //(左边取得到 右边取不到)
    return ;
    }
    int main()
    {
    cin>>b>>c;
    len=strlen(b);//求长度 b c长度一样求谁都行
    work(0,len,0,len);//中序[0,len] 后序[0,len] 区间!!
    return 0;
    }

标签:遍历,求先序,NOIP,int,中序,len,bk,2001,节点
From: https://www.cnblogs.com/xdzxjinghan/p/16586966.html

相关文章

  • [NOIP2001 普及组] 求先序排列
    试题分析:题目中提及了树的先序,中序,后序排列,所以我们需要先知道这三种排列是什么意思。二叉树的3种(深度优先)排列:先序排列,“根左右”。即对于二叉树的每一个子树,先访问其根......
  • NC16645 [NOIP2007]矩阵取数游戏
    题目链接题目题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下:1.每次取数时须从每行各取走一个元素,......
  • noip2018提高组初赛试题
    一、单项选择题(共10题,每题2分,共计20分;每题有且仅有一个正确选项)\2.下列属于解释执行的程序设计语言是()。A.CB.C++C.PascalD.Python答案:D解析:编译语言:C......
  • noip 2014 提高组初赛
    noip2014提高组初赛一、TCP协议属于哪一层协议()A.应用层B.传输层C.网络层D.数据链路层BTCP(传输控制协议)若有变量inta;float:x,y,且a=7,x=2.5,y=......
  • [2001年NOIP普及组] 数的计算
    算法分析:一个数可分为自身(+1)和自身除以2的数所带的次数,适合用递推从前往后推,比如说4可以分为2和1和自身所带表的数相加121231341424124注意:自身也要加1,若不足3直......
  • [NOIP2001 普及组] 数的计算
    试题分析:以4为例子:4后面可以跟上1,2组成14,24。14后面跟不了,24可以跟上1组成124,再加上4本身就可以得到4的种类:14,24,124,4。而我们只要算出1,2的种类就可以加起来得到4......
  • [2011年NOIP提高组] 铺地毯
    输入每个地毯的位置大小,用二维数组存储然后输入指定的点枚举出此点所在地毯(四个顶点上的点也算被地毯覆盖)输出地毯编号(若此处没有被地毯覆盖则输出-1)代码:#include<ios......
  • [2000年NOIP普及组] 税收与补贴问题
    [2000年NOIP普及组]税收与补贴问题分析:根据题意,在销量随售价改变的基础上求最小的补贴或税收,本题用了打表的方式来展现售价与销量之间的关系,其中出现了几个与普遍的规律......
  • [NOIP2001 提高组] 一元三次方程求解
    首先输入系数根据提示:三个实根之差绝对值均>=1......求解最后输出三个实根代码:#include<iostream>#include<cstdio>#include<math.h>usingnamespacestd;intmain(){......
  • [2001年NOIP普及组] 最大公约数和最小公倍数问题
     [2001年NOIP普及组]最大公约数和最小公倍数问题思路:可以运用暴力枚举法。先用两个数的乘积=他们的最大公约数*最小公倍数的公式求出乘积num,再在已知范围内暴力搜素能......