Loading... **1020 Tree Traversals (25 分)** Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree. #### Input Specification: Each input file contains one test case. For each case, the first line gives a positive integer `N` (≤30), the total number of nodes in the binary tree. The second line gives the postorder sequence and the third line gives the inorder sequence. All the numbers in a line are separated by a space. #### Output Specification: For each test case, print in one line the level order traversal sequence of the corresponding binary tree. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line. #### Sample Input: ``` 7 2 3 1 5 7 6 4 1 2 3 4 5 6 7 ``` #### Sample Output: ``` 4 1 6 3 5 7 2 ``` 后中序遍历构建二叉树并输出层次遍历 ``` #include <iostream> #include <queue> #define MAXSIZE 31 using namespace std; int in[MAXSIZE], post[MAXSIZE], n; struct node { int v; node *left, *right; }; node *create(int inl, int inr, int postl, int postr) { if (postl > postr) return NULL; node *root = new node; root->v = post[postr]; int i = 0; for (i = inl; i <= inr; i++) { if (in[i] == post[postr]) break; } root->left = create(inl, i - 1, postl, postl + i - inl - 1); root->right = create(i + 1, inr, postl + i - inl, postr - 1); return root; } void travel() { queue<node *> q; node *root = create(0, n-1, 0, n-1); q.push(root); bool flag = false; while (!q.empty()) { root = q.front(); q.pop(); if (flag) cout << " "; flag = true; cout << root->v; if(root->left!=NULL)q.push(root->left); if(root->right!=NULL)q.push(root->right); } } int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); cin >> n; for (int i = 0; i < n; i++) cin >> post[i]; for (int i = 0; i < n; i++) cin >> in[i]; travel(); return 0; } ``` ![PAT (Advanced Level) Practice 1020 Tree Traversals.png][1] [1]: http://alomerry.com/usr/uploads/2020/01/587723404.png<hr class="content-copyright" style="margin-top:50px" /><blockquote class="content-copyright" style="font-style:normal"><p class="content-copyright">版权属于:清欢</p><p class="content-copyright">本文链接:<a class="content-copyright" href="http://alomerry.com/archives/53/">http://alomerry.com/archives/53/</a></p><p class="content-copyright">转载时须注明出处及本声明</p></blockquote> Last modification:July 2nd, 2020 at 10:53 pm © 允许规范转载 Support 觉得我的文章有帮助吗,欢迎赞赏呀(๑• . •๑) ×Close Appreciate the author Sweeping payments Pay by AliPay Pay by WeChat