• 数据结构 二叉树 根据后序和中序遍历输出先序遍历


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

    题目描述:

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

    输入格式:

    第一行给出正整数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 }
     
  • 相关阅读:
    FusionCharts数据展示成饼状图、柱状图和折线图
    Js获取request中的对象的属相值
    在grid结果集中实现全选或全不选某些特定的行
    JQuery的一些基础知识
    查询的数据插入不到临时表中的原因
    Javascript获取页面表格中的数据
    ajax实现菜单联动显示信息(当选择单位的时候,动态关联出人员信息)
    form表单只提交数据而不进行页面跳转的解决方案
    NotSupportedException-无法将类型“System.DateTime”强制转换为类型“System.Object”
    LINQ to SQL语句
  • 原文地址:https://www.cnblogs.com/m17773572025/p/9923104.html
Copyright © 2020-2023  润新知