北京某公司笔试

给定一颗满二叉树先序遍历的结果
输入2^n-1个数字(n<=16),数字之间用逗号分隔 。

输出中序遍历,数字之间用逗号分隔 。

#include
using namespace std;
void mid(int root[],int length,int idx,int target[],int &count){
	if(idx>length){
		return ;
	}
	mid(root,length,idx*2+1,target,count);
	target[count++]=root[idx];
	mid(root,length,idx*2+2,target,count);
} 
void pre(int root[],int length,int idx,int target[],int &count){
	if(idx>=length){
		return ;
	}
	target[idx]=root[count++];
	pre(root,length,idx*2+1,target,count);
	pre(root,length,idx*2+2,target,count);
}
int main(){
	char c;
	int i=0,k=1,num=-1;
	int root[10000]={0};
	do{
		c=getchar();
		if(k!=1&&(c==','||c==EOF||c=='\n')){
			root[++num]=i;i=0;k=1;
		}else{
			i=c-'0'+i*10;k=0;
		}
	}while(c!='\n'&&c!=EOF);
	
	int pre_root[++num]={0};
	int target[num]={0};
	int a=0;
	int idx=0;
	int count=0;
	pre(root,num,0,pre_root,count);
	count=0;
	mid(pre_root,num,0,target,count);
	
	for(int i=1;i

你可能感兴趣的:(c++,数据结构)