首页 > 代码库 > UVa 11234 - Expressions
UVa 11234 - Expressions
题目:给你一个后缀表达式,展开成二叉树,然后从深层向根的方向输出树上的字符。
分析:DS,递归,搜索。利用递归建树,然后bfs,逆序输出即可。
说明:目标550题!
#include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> using namespace std; char Str[10001]; typedef struct tnode { char V; tnode *L; tnode *R; }tnode; tnode Node[10001]; int TreeSize,Now; tnode* madetree() { int id = TreeSize ++; Node[id].V = Str[-- Now]; if (Node[id].V <= 'Z') { Node[id].R = madetree(); Node[id].L = madetree(); } return &Node[id]; } tnode* Q[10001]; char output[10001]; void bfs(tnode *root) { int move = 0,save = 0,count = 0; Q[save ++] = root; while (move < save) { tnode* now = Q[move ++]; output[count ++] = now->V; if (now->L) Q[save ++] = now->L; if (now->R) Q[save ++] = now->R; } while (count) printf("%c",output[-- count]); printf("\n"); } int main() { int t; while (~scanf("%d",&t)) while (t --) { scanf("%s",Str); TreeSize = 0; memset(Node, 0, sizeof(Node)); Now = strlen(Str); bfs(madetree()); } return 0; }
UVa 11234 - Expressions
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。