• PTA 树的遍历


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

    输入格式:

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

    输出格式:

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

    输入样例:

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

    输出样例:

    4 1 6 3 5 7 2
    解题思路:dfs建树,前序中序的建树可以看我前面发的玩转二叉树
    菜鸡的成长史 ^-^
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int Hou[50],Zh[50],n;
     4 struct Node
     5 {
     6     int data;
     7     Node *left,*right;
     8 };
     9 Node *dfs(int hl,int hr,int zl,int zr)
    10 {
    11     if(hl>hr) return NULL;
    12     Node *head=new Node;
    13     head->data=Hou[hr];  //后序的右边为根节点
    14     int weizhi,geshu;
    15     for(int i=0;i<n;i++)
    16     {
    17         if(Zh[i]==Hou[hr]){
    18             weizhi=i;break;    //找出根在中序的位置
    19         }
    20     }
    21     geshu=zr-weizhi;  //中序的右边有多少个节点
    22     head->left=dfs(hl,hr-geshu-1,zl,weizhi-1);
    23     head->right=dfs(hr-geshu,hr-1,weizhi+1,zr);
    24     return head;
    25 }
    26 void bfs(Node *head)
    27 {
    28     int flag=0;
    29     queue<Node*> que;
    30     Node *p=head;
    31     que.push(head);
    32     while(!que.empty())
    33     {
    34         p=que.front(),que.pop();
    35         if(flag!=0) cout << " ";
    36         cout << p->data,flag=1;
    37         if(p->left!=NULL) que.push(p->left);
    38         if(p->right!=NULL) que.push(p->right);
    39     }
    40     cout << endl;
    41 }
    42 int main()
    43 {
    44     ios::sync_with_stdio(false);
    45     cin>>n;
    46     for(int i=0;i<n;i++) cin>>Hou[i];
    47     for(int i=0;i<n;i++) cin>>Zh[i];
    48     Node *root=dfs(0,n-1,0,n-1);
    49     bfs(root);
    50     return 0;
    51 }
    View Code

  • 相关阅读:
    Postman基本使用
    一分钟应对勒索病毒WannaCry
    使用C语言和Java分别实现冒泡排序和选择排序
    C#快速读写文件
    从一个故事开始谈项目与团队管理
    JavaSE学习总结(八)
    npm 包的 发布 流程
    iOS开发UI篇—Quartz2D使用(矩阵操作)
    iOS开发UI篇—Quartz2D使用(图形上下文栈)
    iOS开发UI篇—Quartz2D简单使用(三)
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/10623897.html
Copyright © 2020-2023  润新知