2001年NOIP全国联赛普及组

题目描述 Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入描述 Input Description

两个字符串,分别是中序和后序(每行一个)

输出描述 Output Description

一个字符串,先序

样例输入 Sample Input

BADC

BDCA

样例输出 Sample Output

ABCD

 #include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef char ElemType;
typedef struct node
{
ElemType data; //数据元素
struct node *lchild; //指向左孩子结点
struct node *rchild; //指向右孩子结点
} BTNode;
BTNode *CreateBT2(char *post,char *in,int n)
/*post存放后序序列,in存放中序序列,n为二叉树结点个数,
本算法执行后返回构造的二叉链的根结点指针*/
{
BTNode *s;
char r,*p;
int k;
if(n<=) return NULL;
r=*(post+n-); //根结点值
s=(BTNode *)malloc(sizeof(BTNode)); //创建二叉树结点*s
s->data=r;
for (p=in;p<in+n;p++) //在in中查找根结点
if (*p==r)
break;
k=p-in; //k为根结点在in中的下标
s->lchild=CreateBT2(post,in,k); //递归构造左子树
s->rchild=CreateBT2(post+k,p+,n-k-); //递归构造右子树
return s;
}
void PreOrder(BTNode *b) /*先序遍历的递归算法*/
{
if (b!=NULL)
{
printf("%c",b->data); /*访问根结点*/
PreOrder(b->lchild);
PreOrder(b->rchild);
}
}
int main(int argc, char *argv[])
{
freopen("data.in","r",stdin);
char in[],post[];
scanf("%s%s",in,post);
BTNode *root=CreateBT2(post,in,strlen(in));
PreOrder(root);
return ;
}

张泽萱的代码:

 #include <iostream>
#include <cstring>
char a[],b[];
using namespace std;
void turn(int l,int r,int st,int ed);
int main(int argc, char *argv[])
{
int n;
cin>>a>>b;//a中序,b后序
n=strlen(b);
turn(,n-,,n-);
return ;
}
void turn(int l,int r,int st,int ed)//l,r分别指向中序的开头和结束,st,ed指向后序的开头和结束
{
int temp,i;
temp=b[ed];
if(l>r||st>ed)return ;
else
{
cout<<char(temp);
for(i=l;i<=r;i++)
{
if(a[i]==temp)
{
turn(l,i-,st,st+i-l-);//查左子树
turn(i+,r,st+i-l,ed-);//查右子树
break;
}
}
}
}

code vs 1013 求先序排列的更多相关文章

  1. codevs——1013 求先序排列

    1013 求先序排列 2001年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给出 ...

  2. codevs 1013 求先序排列

    题目链接:http://codevs.cn/problem/1013/ 题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...

  3. codevs 1013 求先序排列(二叉树遍历)

    传送门 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). Input 两个字符串,分别是中序和后序(每行一个) Outp ...

  4. codevs 1013 求先序排列 2001年NOIP全国联赛普及组 x

                         题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入描述 Inpu ...

  5. [蓝桥杯]ALGO-20.算法训练_求先序排列

    问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所求 ...

  6. 求先序排列(NOIP2001&NOIP水题测试(2017082301))

    题目链接:求先序排列 这道题讲白了,就是数的构造,然后遍历. 思路大致是这样: 我们先通过后序遍历,找到当前区间的根,然后在中序遍历中找到根对应的下标,然后就可以分出左右子树,建立当前根与左右子树根的 ...

  7. 题解 P1030 【求先序排列】

    题解 P1030 [求先序排列] 旧题新解~ 今天做这个题,发现还是没有AC,于是滚回来用了一大堆数据结构A了这个题目,好像复杂度还挺高...... #include <iostream> ...

  8. 如何求先序排列和后序排列——hihocoder1049+洛谷1030+HDU1710+POJ2255+UVA548【二叉树递归搜索】

    [已知先序.中序求后序排列]--字符串类型 #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在这一周遇到的问题便是:给出一棵二叉树的前序和 ...

  9. Java实现 蓝桥杯VIP 算法训练求先序排列

    问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所 ...

随机推荐

  1. Doxygen简单经验谈。。。

    Doxygen,大名鼎鼎的文档生成工具,被Boost.OpenCasCade等诸多项目作为文档生成的不二人选.人说,才华横溢往往是高深莫测,这句话放在 Doxygen这里显然是不适用的.十八般武艺样样 ...

  2. iOS 开发-Certificate、App ID和Provisioning Profile之间的关系

    模拟器调试的时候有的时候不能检验出程序在真实手机上的差别,如果需要进行真机测试或者发布应用到App Store上去的时候, 公司如果没有开发过App,你可以从头开始弄,大部分都是后来接手的,那么当我们 ...

  3. 门罗币(MONERO)钱包生成教程

    一.下载钱包 钱包下载地址:https://getmonero.org/downloads/(如果下载缓慢请使用下载工具下载) 二.图形界面钱包生成 解压运行monero-wallet-gui.exe ...

  4. Axure-Axure RP For Chrome 演示扩展

    Axure RP生成的Html原型,其中包含JS文件,在本地进行演示时浏览器IE会弹出安全提醒.谷歌浏览器Chrome则需要在线安装一个Axure的扩展工具才可以演示. Axure RP Extens ...

  5. 用php实现交互式工具——How do I write a command-line interactive PHP script?

    I want to write a PHP script that I can use from the command line. I want it to prompt and accept in ...

  6. OpenGL ES3 非常好的系列文章

    OpenGL ES3 非常好的系列文章: OpenGL-ES 3.0学习指南(五)--EGL基础 NDK开发OpenGL ES 3.0(二)--初见GLES,第一个三角形 NDK开发OpenGL ES ...

  7. [React] Write a stateful Component with the React useState Hook and TypeScript

    Here we refactor a React TypeScript class component to a function component with a useState hook and ...

  8. 理解linux sed命令

    理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前 ...

  9. 关于 URL 编码及 JavaScript 编码函数【转载+整理】

    原文地址:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 本文内容 引入 环境 测试 JavaScript 编码函数   引入 URL ...

  10. 修改mysql的默认端口号

    mysql的默认端口号是3306,修改端口号的话,找到mysql的安装目录,找到my.ini文件 修改这两处的3306值,重启mysql即可