举杯消愁愁更愁,月底账单入水流 • 8个月前
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 /
评论:
请先登录,才能进行评论