解題心得
跟上一題差不多。
程式碼
#include <iostream> #include <map> using namespace std; map<char, int> m; string inOrder, postOrder; void printPreorder(int start, int end) { if (start > end) return; int val = -1, flag = -1; for (int i = start; i <= end; i++) { if (m[inOrder[i]] > val) { val = m[inOrder[i]]; flag = i; } } cout << inOrder[flag]; printPreorder(start, flag - 1); printPreorder(flag + 1, end); } int main() { cin >> inOrder >> postOrder; for (int i = 0; i < postOrder.length(); i++) m[postOrder[i]] = i; printPreorder(0, postOrder.length() - 1); return 0; }
沒有留言:
張貼留言