首页 > 代码库 > uva-11234-表达式
uva-11234-表达式
后缀表达式,使用队列计算,要求计算的结果一样,输出队列的输入串
表达式转二叉树,层次序遍历,先右孩子,然后字符串反转输出
#include <iostream>#include <sstream>#include<algorithm>#include<memory.h>#include<stdio.h>#include<queue>#include<stack>using namespace std;#define null NULLconst int N = 10000;struct Node{ Node* p; Node* r; Node* l; char key; Node() { p = null; r = null; l = null; key = ‘0‘; }};void print(queue<Node*> q, string& str){ Node* node = null; while (!q.empty()) { node = q.front(); q.pop(); str += node->key; if (node->r != null) q.push(node->r); if (node->l != null) q.push(node->l); }}int main(){ freopen("d:\\1.txt", "r", stdin); int t; cin >> t; while (t--) { Node* root; string str; cin >> str; stack<Node*> s; int l = str.length(); for (int i = 0; i < l; i++) { char c = str.at(i); Node* node = new Node(); node->key = c; if (‘A‘ <= c && c <= ‘Z‘) { Node* l = s.top(); s.pop(); Node* r = s.top(); s.pop(); node->l = l; node->r = r; } s.push(node); } root = s.top(); s.pop(); queue<Node*> q; q.push(root); string& str1 = str; str=""; print(q, str1); reverse(str.begin(), str.end()); cout << str << endl; } return 0;}
uva-11234-表达式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。