AC

举杯消愁愁更愁,月底账单入水流  •  8个月前


include<bits/stdc++.h>

using namespace std; struct Node{

int value,level;		//值  层 
int lson,rson;		//子节点 

}tree[100]; int cnt=2; int maxlevel=0; void dfs(int node,int level){ //dfs是深度优先遍历的缩写

int num;
cin>>num;
tree[node].value=num;		//存储该节点值 
tree[node].level=level;		//存储该节点层数 
if(num!=-1){			//不是虚节点 
	maxlevel=max(level,maxlevel);		//更新最深 
	tree[node].lson=cnt;		//存储左节点编号 
	cnt++;
	dfs(tree[node].lson,level+1);
	tree[node].rson=cnt;		//存储右节点编号 
	cnt++;
	dfs(tree[node].rson,level+1);
}

} int main(){

dfs(1,1);
queue<int> q;		//储存编号的队列
q.push(1);		//根节点编号为1
vector<int> ans[100];		//存储值的动态数组 
while(!q.empty()){
	int node=q.front();
	q.pop();
	if(tree[node].value!=-1){
		q.push(tree[node].lson);
		q.push(tree[node].rson);
		ans[tree[node].level].push_back(tree[node].value);
	}
} 
for(int i=1;i<=maxlevel;i++){
	if(i%2==0){
		for(int j=ans[i].size()-1;j>=0;j--){
			cout<<ans[i][j]<<' ';
		}
	}else{
		for(int j=0;j<ans[i].size();j++){
			cout<<ans[i][j]<<' ';
		}
	}
	cout<<endl;
}
return 0;

} / que: 1 2 -1 5 -1 -1 3 4 -1 -1 -1 ans: 1 3 2 5 4 /


评论:

请先登录,才能进行评论