CometOJ C0164 [2001普及组-C]求先序排列

一、题目描述

C0164 [2001普及组-C]求先序排列

96.00%
提交人数:25
通过人数:242020/1/23

题目描述

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

输入描述

2 行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

输出描述

1 行,表示一棵二叉树的先序。

样例输入 1

BADC
BDCA

样例输出 1

ABCD

二、AC 代码

#include<cstdio>
#include<cstring>
#pragma warning(disable:4996)
char inorder[9], postorder[9];
void putpreorder(const char* inorder, const long long& li, const char* postorder, const long long& lp) {
	const char* root = strchr(inorder, postorder[lp - 1]); putchar(*root);
	long long l1 = root - inorder, l2 = inorder + lp - root - 1;
	if (l1 != 0)putpreorder(inorder, l1, postorder, l1);
	if (l2 != 0)putpreorder(root + 1, l2, postorder + l1, l2);
}
int main() {
	scanf("%s%s", inorder, postorder);
	putpreorder(inorder, strlen(inorder), postorder, strlen(postorder));
	return 0;
}
发布了214 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/COFACTOR/article/details/104076478