UVA 11234 Expressions
2013-07-16 09:18
483 查看
UVA 11234 Expressions
题目看了好久才看懂。从字符串从后往前,一个个字符建二叉树,如果是大写字母就新建一个节点,如果是小写就返回,建好后,进行BFS把树输出即可。在POJ上超时了。 很坑爹 时间复杂度为O(n), 不可能超时按理说, 应该是用了动态内存分配超时。
在UVA上顺利AC
#include <stdio.h> #include <string.h> #include <ctype.h> typedef struct Tree { char data; struct Tree *l; struct Tree *r; } bitree; int t; char sb[10005]; int len; int head; int rear; struct Q { bitree *TT; } q[10005]; void build(bitree *&T) { T = new(bitree); if (isupper(sb[len])) { T -> data = sb[len --]; build(T -> l); build(T -> r); } else { T -> data = sb[len --]; T -> l = NULL; T -> r = NULL; } } void bfs(bitree *T) { rear = 1; head = 0; q[head].TT = T; while (head < rear) { bitree *Tl; bitree *Tr; Tr = q[head].TT -> r; Tl = q[head].TT -> l; if(Tr != NULL) { q[rear ++].TT = Tr; } if (Tl != NULL) { q[rear ++].TT = Tl; } head ++; } } int main() { scanf("%d", &t); getchar(); while (t --) { memset(q, 0, sizeof(q)); gets(sb); len = strlen(sb) - 1; bitree *T = NULL; build(T); bfs(T); for (int i = head - 1; i >= 0; i --) printf("%c", q[i].TT -> data); printf("\n"); } return 0; }
相关文章推荐
- UVa 11234 - Expressions
- UVa 11234 - Expressions
- UVa 11234 Expressions
- UVA - 11234 - Expressions (栈和队列)
- UVA 11234 - Expressions
- UVA 11234 - Expressions
- 数据结构 + BFS uva 11234 - Expressions
- UVA11234- Expressions
- UVA 11234 - Expressions
- uva 11234 Expressions 表达式 建树+BFS层次遍历
- UVA 11234 - Expressions
- UVA 11234 - Expressions
- UVA 11234-Expressions
- UVa 11234 - Expressions
- uva 11234 Expressions 表达式 建树+BFS层次遍历
- UVA11234 Expressions【BFS】
- uva 11234 - Expressions
- Uva 11234 Expressions (二叉树的层次遍历)
- UVa 11234 - Expressions
- uva-11234 Expressions