URAL1136

来源:互联网 发布:ape播放软件 编辑:程序博客网 时间:2024/06/04 18:00
后缀表达式建树。
#include<iostream>using namespace std;const int N = 3333;int n;struct Node{int value;int left;int right;}a[N];void initialize(Node *p,int n){for (int i = 0; i < n; i++){(p+i)->left = i;(p+i)->right = i;}}void tree(int i,int j){if (i == j)return;else{if (a[i].value > a[j].value){if (a[j].right == j)a[j].right = i;elsetree(i,a[j].right);}else{if (a[j].left == j)a[j].left = i;elsetree(i,a[j].left);}}}void find(int j){if (a[j].right != j)find(a[j].right);if (a[j].left != j)find(a[j].left);if (j == n-1)cout << a[j].value;elsecout << a[j].value << " ";}int main(){while (cin >> n){initialize(a,n);for (int i = 0; i < n; i++)cin >> a[i].value;for (int i = n - 1; i >= 0; i--)tree(i,n-1);find(n-1);}return 0;}

原创粉丝点击