首页 > 其他 > 详细

pat1020

时间:2017-03-08 00:25:39      阅读:277      评论:0      收藏:0      [点我收藏+]

  

#include<stdio.h>
#include<stdlib.h>
#include<queue> 
typedef struct node{
	int value;
	struct node* left;
	struct node* right;
}node;
using namespace std;


node* f(int in[],int post[],int length){
	node* root=(node*)malloc(sizeof(node));
	root->value=post[length-1];
	int flag;
	for(int i=0;i<length;i++){
		if(post[length-1]==in[i]){
			flag=i;
			break;
		}
	}
	
	if(flag!=0){
		root->left=f(in,post,flag);
	}
	else
		root->left=NULL;
	
	if(length-flag-1!=0){
		root->right=f(in+flag+1,post+flag,length-flag-1);
	}
	else
		root->right=NULL;
			
	return root;
}

void traversal(node* root){
	int flag=0;
	queue<node*> q;
	q.push(root);
	while(q.empty()==false){
		node* tmp=q.front();
		q.pop();
		if(tmp->left)
			q.push(tmp->left);
		if(tmp->right)
			q.push(tmp->right);
	
		if(flag==0){
			flag=1;
		}
		else
			printf(" ");
		
		printf("%d",tmp->value);
	}
	 
}

int main(){
	int n;
	scanf("%d",&n);
	int post[n],in[n];
	for(int i=0;i<n;i++){
		scanf("%d",post+i);
	}
	for(int i=0;i<n;i++){
		scanf("%d",in+i);
	}
	
	node* root=f(in,post,n);
	traversal(root);
	return 0;
} 

  

pat1020

原文:http://www.cnblogs.com/lsj2020/p/6517248.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!