03-树3 Tree Traversals Again (25 分)

03-树3 Tree Traversals Again (25 分)_第1张图片

 03-树3 Tree Traversals Again (25 分)_第2张图片

【mooc上姥姥提供的代码】

#include
#include
#include
#include
using namespace std;
const int maxn=100;
int pre[maxn], in[maxn], post[maxn];

void solve(int PreL, int inL, int postL, int n){
	if(n==0)return;
	if(n==1){
		post[postL]=pre[PreL];
		return;
	}
	int i;
	int root=pre[PreL];
	post[postL+n-1]=root;
	for(i=0; i st;
	for(int z=0; z<2*n; z++){
		cin>>s;
		if(s=="Push"){
			scanf("%d\n", &num);
			st.push(num);
			pre[i++]=num;
		}else{
			num=st.top();
			st.pop();
			in[j++]=num;
		}
	}
	solve(0,0,0,n);
	for(int i=0; i

 

【自己的】大致思路:根据已知条件构建树,构建完成后,采用后序递归遍历树

#include
#include
#include
#include
const int maxn=35;
using namespace std;
struct TNode{
	int left, right;
}T[maxn];
int count=0, n;
void print(int root){
	if(root==-1)return ;
	if(T[root].left!=-1)print(T[root].left);
	if(T[root].right!=-1)print(T[root].right);
	count++;
	printf("%d", root);
	if(count st;
	for(int i=0; i>s;
		if(s=="Push"){
			cin>>num;
			st.push(num);
			if(i==0){
				root=num;
				first=num;
			}else{
				if(flag==0)T[root].left=num;
				else T[root].right=num;
				root=num;
				flag=0;
			}
		}else{
			root=st.top();
			st.pop();
			flag=1;
		}
	} 
	print(first);
	return 0;
}

 

你可能感兴趣的:(陈越,何钦铭数据结构2018秋)