PAT a1102题解
2017-07-24 00:09
134 查看
#include <cstdio> #include <queue> #include <algorithm> using namespace std; const int maxn = 110; struct node{ int lchild, rchild; }Node[maxn]; bool notRoot[maxn] = {false}; int n, num = 0; void print(int id){ printf("%d", id); num++; if(num < n) printf(" "); else printf("\n"); } void inOrder(int root){ if(root == -1){ return; } inOrder(Node[root].lchild); print(root); inOrder(Node[root].rchild); } void BFS(int root){ queue<int> q; q.push(root); while(!q.empty()){ int now = q.front(); q.pop(); print(now); if(Node[now].lchild != -1) q.push(Node[now].lchild); if(Node[now].rchild != -1) q.push(Node[now].rchild); } } void postOrder(int root){ if(root == -1){ return; } postOrder(Node[root].lchild); postOrder(Node[root].rchild); swap(Node[root].lchild, Node[root].rchild); } int strToNum(char c){ if(c == '-') return -1; else{ notRoot[c - '0'] = true; return c - '0'; } } int findRoot(){ for(int i = 0; i < n; i++){ if(notRoot[i] == false){ return i; } } } int main(){ char lchild, rchild; scanf("%d", &n); for(int i = 0; i < n; i++){ scanf("%*c%c %c", &lchild, &rchild); Node[i].lchild = strToNum(lchild); Node[i].rchild = strToNum(rchild); } int root = findRoot(); postOrder(root); BFS(root); num = 0; inOrder(root); return 0; }
相关文章推荐
- PAT A 1102
- PAT A1102 invert a binary tree (25)
- PAT A 1102. Invert a Binary Tree (25)
- hdu1102(prime)
- hdu 1102 Constructing Roads(Kruskal算法)
- hdu 1102__Constructing Roads (Prim算法)
- 杭电OJ 1102(Constructing Roads)解题报告
- 九度OJ 1102:最小面积子矩阵 (DP、缓存、剪枝)
- hdu 1102 Constructing Roads +1879 继续畅通工程(MST)
- 1102. Invert a Binary Tree (25)
- VC++的LNK1102 error out of memory 问题
- HDU 1102 Constructing Roads
- HDU 1102 Constructing Roads [已知路径修好求最小生成树]
- HDU 1102 (最小生成树)
- PAT A 1090 Highest Price in Supply Chain 深搜
- 济南-1102试题解题报告
- PAT A 1016. Phone Bills (25)【模拟】
- PAT A 1036
- 51nod-1102 面积最大的矩形
- 51Nod - 1102 单调栈