• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

题目描述

约翰非常重视他的牛的血统。然而,他不是一个真正好的簿记员。他把自己家牛的家谱做成二叉树,用更多的“遍历树的中序”和“遍历树的前序”的线性符号来记录二叉树,而不是用图解的方法。

你的任务是创建牛家谱的“中序遍历树”和“前序遍历树”的符号。每头牛的名字都被翻译成一个独特的字母。你可能已经知道,知道了树的两种遍历之后,往往就可以重建树了。显然,这里的树不会超过26个顶点。这是示例输入和示例输出中树的图形表示:

C

/\

/\

浊塞音

/\/

一个小时

/\

英法

树的有序遍历就是按照左子树、根、右子树的顺序访问节点。

树的前序遍历是按照根、左子树、右子树的顺序访问节点。

树后遍历是按照左子树、右子树、根的顺序访问节点。

输入格式

第一行:树的中间顺序遍历

第2行:相同树的前序遍历。

输出格式

的单行表示树的后续遍历。

输入输出样例

输入#1输出#1

ABEDFCHG AEFDBHGC

CBADEFGH

解析

这个问题本质上是:输入树的中序遍历和前序遍历,输出树的逆序遍历。

二叉树的遍历;

前序遍历:围绕根

中序遍历:左根右

后序遍历:左右根

代码中对每一步的分析都进行了注释。

代码:

#包括iostream

#包括cstring

使用命名空间std

字符串q,m;

无效侯旭(字符串q,字符串m)

{

if(q.empty())返回;//前导为空。返回

char r=q[0];//前导在词根周围,第一个字母是词根

int k=m . find(r);//在中间顺序中找到根的位置

q . erase(q . begin());//删除前导序列中的根节点

字符串lq,rq;

lq=q.substr(0,k);//从Q序列中的0位置截取K个字符,即0-k-1个字符,标记为l。

rq=q . substr(k);//从第k个字符到末尾截断

字符串lm,RM;

lm=m.substr(0,k);

RM=m . substr(k ^ 1);//跳离K,因为K在中阶的位置就是根的位置

侯旭(lq,lm);//左侧

侯旭(人民币);//右

coutr//根

}

int main()

{

cinmq

侯旭(q,m);

返回0;

}

(代码参照洛古解析)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now