PAT甲级1099
来源:互联网 发布:男士休闲短靴 知乎 编辑:程序博客网 时间:2024/06/06 23:58
#include<iostream>#include<queue>#include<algorithm>using namespace std;int lef[100]={0};int righ[100]={0};int value[100]={0};int q[100]={0};int k;bool compare(int a,int b){ return a<b;}int dg(int root){ if(lef[root]==-1) { q[root]=value[k++]; if(righ[root]!=-1) { dg(righ[root]); } else { return 0; } } else { dg(lef[root]); q[root]=value[k++]; if(righ[root]!=-1) { dg(righ[root]); } } }int main(){ int n=0; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { scanf("%d %d",&lef[i],&righ[i]); } for(int i=0;i<n;i++) { scanf("%d",&value[i]); } sort(value,value+n,compare); k=0; dg(0); printf("%d",q[0]); queue<int> qq; qq.push(0); int j=0; while(!qq.empty()) { j=qq.front(); qq.pop(); if(lef[j]!=-1) { qq.push(lef[j]); } if(righ[j]!=-1) qq.push(righ[j]); if(j!=0)printf(" %d",q[j]); } } return 0;}
思路:首先使用两个数组分别表达左右子树
然后从小到大排列输入数组,为中序遍历做准备
然后使用递归使用中序遍历顺序构建树(这里应该可以用栈,就不递归了)
使用队列进行层序遍历输出结果
阅读全文
0 0
- PAT(甲级)1099
- PAT甲级1099
- PAT甲级1099
- PAT 甲级
- PAT甲级 A1025.PAT RANKING
- PAT 甲级 1025 PAT Ranking
- PAT(甲级)1003
- PAT(甲级)1004
- PAT(甲级)1005
- PAT(甲级)1006
- PAT(甲级)1007
- PAT(甲级)1008
- PAT(甲级)1009
- PAT(甲级)1010
- PAT(甲级)1011
- PAT(甲级)1012
- PAT(甲级)1013
- PAT(甲级)1014
- hadoop入门十四(pig)
- angular和路由实现页面跳转/姓名筛选/年龄区间查找/单/批量删除
- cup
- TreeSet中的两种排序方法
- 运维常用linux命令
- PAT甲级1099
- 【Unity技巧】四元数(Quaternion)和旋转
- eclipse+maven+kotlin+web+Spring+springMVC+ibatis的环境配置
- C语言获取计算机系统参数
- [Light oj] 1245
- 十种编程语言的特点和领域
- 五种典型开发周期模型(瀑布、V、原型化、螺旋、迭代)
- 有关PDO小结
- 向字符串中指定位置插入字符