二叉树——美国血统(洛谷 P1827)

news/2024/11/17 3:02:38/

题目选自洛谷P1827

 根据前序、中序遍历求出后序遍历,这也是二叉树很重要且基本的知识,还是有必要练练。

至于什么是前、中、后序遍历,这里就不再过多讲述。

用手模拟求解是简单的,接下来看看如何用代码来实现。

基本思路如下:

中序遍历为:ABEDFCHG,前序遍历为:CBADEFGH。

那么根节点就是C。

于是找到了中序遍历的左子树:ABEDF 和右子树:HG。

紧接着,前序遍历找到了左子树:BADEF 和右子树:GH。

于是,我们可以继续递归下去,直至字符串为空。

题目描述

农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而 不是用图形的方法。

你的任务是在被给予奶牛家谱的“树中序遍历”和“树前序遍历”的符号后,创建奶牛家谱的“树的 后序遍历”的符号。每一头奶牛的姓名被译为一个唯一的字母。(你可能已经知道你可以在知道树的两 种遍历以后可以经常地重建这棵树。)显然,这里的树不会有多于 26 个的顶点。 这是在样例输入和 样例输出中的树的图形表达方式:

         C/  \/  \B    G/ \  /A   D  H/ \E   F

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

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

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

输入格式

第一行: 树的中序遍历

第二行: 同样的树的前序遍历

输出格式

单独的一行表示该树的后序遍历。

输入输出样例

输入 1

ABEDFCHG
CBADEFGH 

输出 1

AEFDBHGC

说明/提示

题目翻译来自NOCOW。

USACO Training Section 3.4

 解题代码:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<string.h>
using namespace std;
string a, b;
void dfs(string x, string y){if(!(int)y.size()) return;int pos = x.find(y[0]);dfs(x.substr(0, pos), y.substr(1, pos));dfs(x.substr(pos + 1), y.substr(pos + 1));printf("%c", y[0]);return;
}
int main(){cin >> a >> b;dfs(a, b);return 0;
}


http://www.ppmy.cn/news/789678.html

相关文章

【科普】通过西方人的姓名判断血统国籍

http://zhan.renren.com/makehistorylove?gid3602888498034637157&frompost&checkedtrue 1、英格兰人和低地苏格兰人的姓氏中很多含有前缀“-son”&#xff0c;含义是“某人之子”一般翻译成“逊、生、森”&#xff0c;比如爱的生Edison&#xff0c;杰克逊Jackson&am…

凯撒加解密和破解

简单介绍 古典密码学是最基础的密码学问题&#xff0c;在古典密码学中&#xff0c;最为经典的就是凯撒密码。我们在这里简单介绍一下凯撒密码。 凯撒密码又称为凯撒加密&#xff0c;凯撒变换&#xff0c;变换加密&#xff0c;是一种最简单且为广为人知的加密技术。他就是一种替…

暴发户与贵族

相比于中国现在最容易提出的一个词“官二代”“富二代”&#xff0c;我们还可以提出一个新概念&#xff0c;那就是“欧美新贵族”。以 欧美历史来看&#xff0c;近年来产生的沃伦巴菲特、 比尔盖茨&#xff0c;和奥巴马&#xff0c;这种富有精神领袖气质的新富人&#xff0c;我…

American Heritage美国血统

American Heritage美国血统 译 By TinyTony 描述 农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛们的家谱作成二叉树&#xff0c;并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而不是用图形的方法。 …

P1827 美国血统 American Heritage

题目描述&#xff1a; 农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛们的家谱作成二叉树&#xff0c;并且把二叉树以更线的”树的中序遍历“和”树的前序遍历“的符号加以记录而不是用图形的方法。 你的任务是在被给予奶牛家谱的”树…

P1827 [USACO3.4]美国血统 American Heritage

P1827 [USACO3.4]美国血统 American Heritage 由前序遍历 中序遍历求后序遍历。 主要方法是找根节点在中序遍历中的位置 char *p;p(char *)malloc(sizeof(char)*N);cin>>p;char *i;int nstrlen(p);for(ip;i<pn;i) {if(*i5) break;}cout<<i-p;输入12345时&…

USACO 3.4.2 American Heritage 美国血统

题目描述: 3.4.2 American Heritage (heritage) (heritage.pas/c/cpp) 农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛们的家谱作成二叉树&#xff0c;并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而不…

P80W,贵族的新衣,山寨的血统

近日&#xff0c;在苏宁看到P80W&#xff0c;一打听竟是先锋公司产品。 不吃一惊&#xff0c;2005年左右就知道Pionner这个公司了&#xff0c;在影音娱乐产品、光驱领域有不小名气&#xff0c;俺家05年那台机子用的光驱就是它家的牌子。 线索一&#xff0c;在苏宁易购上看到…