当前位置:   article > 正文

树的遍历(PTA)_7-6 树的遍历 分数 10 作者 陈越 单位 浙江大学 给定一棵二叉树的后序遍历和中序

7-6 树的遍历 分数 10 作者 陈越 单位 浙江大学 给定一棵二叉树的后序遍历和中序

L2-006 树的遍历

作者 陈越

单位 浙江大学

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。

输出格式:

在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

输入样例:

  1. 7
  2. 2 3 1 5 7 6 4
  3. 1 2 3 4 5 6 7

输出样例:

4 1 6 3 5 7 2

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5. //7
  6. //2 3 1 5 7 6 4
  7. //1 2 3 4 5 6 7
  8. void dfs(vector<vector<int>> &v, vector<int> postorder, vector<int> inorder, int k) {
  9. if (postorder.size() == 0) return;
  10. if (k == v.size()) v.push_back(vector<int>());
  11. int index = postorder.size() - 1;
  12. v[k].push_back(postorder[index]);
  13. int position = 0;
  14. while (inorder[position] != postorder[index]) position++;
  15. //cout << start_post << " ";
  16. vector<int> postorder_1;
  17. vector<int> inorder_1;
  18. for (int i = 0; i < position; i++) {
  19. postorder_1.push_back(postorder[i]);
  20. inorder_1.push_back(inorder[i]);
  21. }
  22. vector<int> postorder_2;
  23. for (int i = position; i < index; i++) {
  24. postorder_2.push_back(postorder[i]);
  25. }
  26. vector<int> inorder_2;
  27. for (int i = position + 1; i <= index; i++) {
  28. inorder_2.push_back(inorder[i]);
  29. }
  30. dfs(v, postorder_1, inorder_1, k + 1);
  31. dfs(v, postorder_2, inorder_2, k + 1);
  32. return;
  33. }
  34. int main() {
  35. vector<vector<int>> v;
  36. vector<int> v1, v2;
  37. int n;
  38. cin >> n;
  39. for (int i = 0, a; i < n; i++) {
  40. cin >> a;
  41. v1.push_back(a);
  42. }
  43. for (int i = 0, a; i < n; i++) {
  44. cin >> a;
  45. v2.push_back(a);
  46. }
  47. dfs(v, v1, v2, 0);
  48. int flag = 0;
  49. for (auto x : v) {
  50. for (auto y : x) {
  51. if (flag) cout << " ";
  52. cout << y;
  53. flag = 1;
  54. }
  55. }
  56. return 0;
  57. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/681760
推荐阅读
相关标签
  

闽ICP备14008679号