PAT1020 Tree Traversals
2015-11-01 23:41
218 查看
说实话,最近一段时间自己没怎么好好写PAT了,一直被这道题卡着,但是也没怎么好好去想,一直在考虑考研的事情,做了很多了解,。。。。。还是要好好准备才行。
这道题其实很简单,题目的意思就是根据二叉树的后序和中序来写出二叉树的层次遍历,自己都不知道当年数据结构在学什么东西,这么简单的题目都不会。。。
这道题其实很简单,题目的意思就是根据二叉树的后序和中序来写出二叉树的层次遍历,自己都不知道当年数据结构在学什么东西,这么简单的题目都不会。。。
#include<stdio.h> #include<queue> #include<stdlib.h> using namespace std; typedef struct tree{ tree *l,*r; int data; }tree; tree *root; queue<int> q; int n,last[2005],in[2005],count = 0; tree *build(int *a,int *b,int c){ tree *t; for(int i = 0;i<c;i++){ if(a[c-1] == b[i]){ t = (tree*)malloc(sizeof(tree)); t->data = b[i]; t->l = build(a,b,i); t->r = build(a+i,b+i+1,c-i-1); return t; } } return NULL; } int atLevel(tree *a,int level){ if(!a || level <0) return 0; if(level == 0){ count++; if(count == n) printf("%d\n",a->data); else printf("%d ",a->data); return 1; } return atLevel(a->l,level-1)+atLevel(a->r,level-1); } void bianli(tree *a){ for(int i = 0; ;i++){ if(!atLevel(a,i)) break; } } int main(){ while(scanf("%d",&n) != EOF){ for(int i = 0;i<n;i++) scanf("%d",&last[i]); for(int i = 0;i<n;i++) scanf("%d",&in[i]); root = build(last,in,n); tree *a = root; bianli(a); } return 0; }
相关文章推荐
- 模拟IIC协议驱动气压传感器bmp085
- 秋招面试中常见题型以及知识点总结
- Spring开发包镜像下载地址
- 对象作为参数的连续传递(有点乱。。)
- [LeetCode] Word Search 的非递归实现
- spring注解中的@Autowired和@Component基本作用
- Java集合 Json集合之间的转换
- 数据存储(沙盒,偏好,归档)
- fipsql
- 打桩 转
- Linux ssh-keygen生成公钥和私钥
- 期中复习
- Appdelegate和Windos内容的简单介绍
- fips1101
- iOS 9: UIStackView入门
- ionic调试“死亡白屏”
- MFC笔记----对话框
- fips
- java transient关键字用法
- tar 打包压缩目录