zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    一道看似简单的sql需求却难倒各路高手
    手把手教你Linux服务器集群部署.net网站
    最简单的 Web Service 入门 (看了包会)
    360wifi 在 windows server 2008 / 2003 的使用方法
    react 入门
    bind、call、apply的区别
    webkit css 扩展
    如何构建一个微型的CMD模块化加载器
    Base64的原理、实现及应用
    You don't know JS 读书笔记(一)
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/10623897.html
Copyright © 2011-2022 走看看