zoukankan      html  css  js  c++  java
  • 数据结构 二叉树 根据后序和中序遍历输出先序遍历

    根据后序和中序遍历输出先序遍历 

    题目描述:

    本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。

    输入格式:

    第一行给出正整数N(30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。

    输出格式:

    在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。

    输入样例:

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

    输出样例:

    Preorder: 4 1 3 2 6 5 7

    相关知识:

    1.先序遍历的递归过程为:若二叉树为空,遍历结束。否则:①访问根结点;②先序遍历根结点的左子树;③先序遍历根结点的右子树。 简单来说先序遍历就是在深入时遇到结点就访问。

    2.中序遍历的递归过程为:若二叉树为空,遍历结束。否则:①中序遍历根结点的左子树;②访问根结点;③中序遍历根结点的右子树。简单来说中序遍历就是从左子树返回时遇到结点就访问。

    3.后序遍历的递归过程为:若二叉树为空,遍历结束。否则:①后序遍历根结点的左子树;②后序遍历根结点的右子树;③访问根结点。简单来说后序遍历就是从右子树返回时遇到结点就访问。

    我的代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 void getpre(int *a,int *b,int n)    //其中数组a为后序,b为中序,n为每次遍历数目,用来求c这个先序
     5 {
     6     if(n>0)  
     7     { 
     8         int root = a[n-1];  //根结点为后序遍历的最后一个
     9         int i;
    10         for(i=0;i<n;i++)    //在中序遍历中查找根结点
    11         {
    12             if(b[i] == root) 
    13             {
    14                 break;
    15             }
    16         }
    17         cout << " " << root;
    18         getpre(a, b, i);    //对左子树来查找根结点
    19         getpre(a+i, b+i+1, n-i-1);  //对右子树来查找根结点
    20     }
    21 }
    22 
    23 int main()
    24 {
    25     int n;
    26     cin >> n;
    27     int a[n],b[n],c[n];  //a[n]后序 b[n]中序
    28     for(int i=0;i<n;i++)
    29     {
    30         cin >> a[i];    //输入后序
    31     }
    32     for(int i=0;i<n;i++)
    33     {
    34         cin >> b[i];    //输入中序
    35     }
    36     cout << "Preorder:";
    37     getpre(a,b,n);
    38     return 0;
    39 }
     
  • 相关阅读:
    redis
    Ubuntu 用VSFTP搭建FTP服务器
    ADO.NET中高效地使用数据库连接
    类型后面加问号 int?
    system.data.sqlclient.sqlexception:timeout expired
    BackgroundWorker超级详细的用法
    异步调用WCF服务,并将数据填入GridLookUpEdit中
    linq to entity报"不允许启动新事务,因为有其他线程正在该会话中运行."错误解决方法
    sql2005 数据库备份 对于服务器失败
    调用WCF服务返回list集合时出错的解决方法
  • 原文地址:https://www.cnblogs.com/m17773572025/p/9923104.html
Copyright © 2011-2022 走看看