3 条题解
-
0
#include <bits/stdc++.h> using namespace std; struct node{ int val; int l,r; };//注意这里要有分号 node tree[2005]; int main() { int n; cin>>n; if(n==0){ return 0; } for(int i=0;i<n;i++){ cin>>tree[i].l>>tree[i].r; } for(int i=0;i<n;i++){ cin>>tree[i].val; } queue<int> q; q.push(0); while(!q.empty()){ int size=q.size();//记录当前层有几个节点 while(size--){//处理当前层,注意过程中q可能会增加节点所以不能用q.size() int u=q.front();//获取当前队首的元素值 q.pop();//弹出(移除)队首 cout<<tree[u].val; cout<<" ";//当前层还没结束,输出空格 //当前节点的左右儿子节点需要加入队列,排队待办 //因为我们已经记录了当前层的元素个数size所以队列变长不会影响当前层的处理 if(tree[u].l!=-1){ q.push(tree[u].l); } if(tree[u].r!=-1){ q.push(tree[u].r); } } cout<<endl;//每层结束后换行 } return 0; }
信息
- ID
- 19410
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 26
- 已通过
- 4
- 上传者