BJUTACM 1065: 중근 및 후근 시퀀스로 두 갈래 트리 재구성

1796 단어 나무.
이 문제와 기초적인 나무 앞뒤 순서를 반복하는 것은 학습 나무의 시작이다. 이런 것들은 두 갈래 나무의 가장 기본적인 조작이라고 할 수 있다. 진정한 반복은 두 갈래 나무가 아니라 두 갈래 나무의 더 많은 조작은 계속 학습해야 한다.
그 중에서 가장 기초적인 것은 전순에 따라 중순 서열이 두 갈래 나무의 후순 서열을 출력하는 것이다. 그 기본 사상은 전순 서열을 훑어보고 모든 전순 서열이 중순 서열에 있는 위치를 찾아내고 이 위치로 돌아가서 왼쪽 트리를 재구성하고 오른쪽 트리를 재구성하며 마지막으로 찾은 전순 서열의 수를 후순으로 훑어보는 수조에 입력하는 것이다.
귀속 종료 조건은 l>r
일부 코드를 재구성하는 것도 전체 프로그램의 관건이다
void plant(int l,int r)
{
	if(l>=r)	return ;
//	int root;
	int root = pre[pos++];// 
	int m; 
	for(int i=0;i

그러나 제목이 요구하는 것은 후순과 중순이 흐르는 순서에 따라 전순이 흐르는 순서를 출력하는 것이다. 관찰한 결과 거꾸로 가는 후순이 흐르는 것을 전순으로 하고 중순이 흐르는 것도 거꾸로 하는 것을 새로운 중순으로 한다. 이 두 가지에 따라 새로운 두 갈래 나무(자신은'거울면'나무라고 생각한다)의 후순이 흐르는 것을 재구성한 다음에 이 후순이 흐르는 것은 제목이 요구하는 후순이다.
제목 링크
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int pos = 0;
int jishu = 0;
int n;
//vector  pre;
//vector  in;
//vector  post; 
int pre[1005];
int in[1005];
int post[1005]; 
/*
	11
	0 2 1 8 9 5 3 4 6 7 10
	8 1 9 2 5 0 6 4 10 3 7
*/
/*
	5
	1 2 3 4 5
	3 2 4 1 5
*/
/*
	5
	5 1 4 2 3
	5 4 3 2 1
*/
void plant(int l,int r)
{
	if(l>=r)	return ;
//	int root;
	int root = pre[pos++];
	int m; 
	for(int i=0;i

좋은 웹페이지 즐겨찾기