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

news/2024/7/5 9:41:25

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

题目描述:

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

输入格式:

第一行给出正整数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 }

 

 

转载于:https://www.cnblogs.com/m17773572025/p/9923104.html


http://www.niftyadmin.cn/n/2747043.html

相关文章

adplayer移植【转】

本文转载自&#xff1a;https://blog.csdn.net/qq361294382/article/details/50525412 这两天做madplayer移植&#xff0c;由于是刚装的ubuntu14.04&#xff0c;所以有好多库没装&#xff0c;还有其它未配置起来的地方&#xff0c;搞起来有几个问题&#xff0c;不过组后按着教程…

梯度下降的超参数大于等于2什么意思_梯度、散度、旋度与矢量分析

矢量分析在场论中非常重要&#xff0c;而三个基本算子&#xff08;梯度、散度与旋度&#xff09;又是构成各种复杂关系式的基础&#xff0c;下面逐一介绍&#xff0c;应特别注意散度与旋度的基本定义。对于矢量恒等式&#xff0c;在此列出是为了使用时查找方便&#xff0c;具体…

维护盘pe linux,不进入pe系统也能轻松维护硬盘,简直神器!

原标题&#xff1a;不进入pe系统也能轻松维护硬盘&#xff0c;简直神器&#xff01;相对其他器件而言&#xff0c;硬盘就属于比较脆弱的一类&#xff0c;如果硬盘没有保护好很容易出现问题&#xff0c;一旦遭遇硬盘损坏&#xff0c;将会带来很大的麻烦&#xff0c;所以我们需要…

linux 蓝牙 profile,Linux系统下蓝牙立体声配置A2DP profile

系统配置&#xff1a;Linux debian 2.6.22.6 #7 Mon Sep 3 10:46:00 CST2007 ppc GNU/Linuxbluetooth software: bluez-lib bluez-utils均是3.22。bluez.orgbluetooth hardware: iBook G4 内置的CSR 蓝牙2.0芯片、MotorolaS705蓝牙立体声耳机&#xff0c;也是CSR 蓝牙2.0芯片。…

Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

记一次Java Bug的解决过程 Q:Bug描述 前端form表单数据提交时&#xff0c;后端出现Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type application/x-www-form-urlencoded;charsetUTF-8 not supported]这样的提示&#xff0c;也没有触发Con…

【持续更新】NOIP注意事项

1.无根据的乱搞不可能对 2.必须造极限数据跑一下 3.必须测空间 4.不管用不用都把cstring加上 5.开文件测样例 6.删一长串代码最好注释 7.到10:00先敲暴力 8.题读三遍 9.先做好得分的&#xff0c;而不是先做好玩的 10.不准写LCT之类的神奇东西 11.就算存不下也要把dp方程写出来 …

02、在层级未知情况下通过递归查找子物体

1、在在层级未知情况下通过递归查找子物体 &#xff0c;这个主要是用于UI的的层级查找中 2、代码&#xff1a; 1 using System.Collections;2 using System.Collections.Generic;3 using UnityEngine;4 5 public class EnemyManager : MonoBehaviour6 {7 8 private GameOb…

读卡购票c语言程序,基于51单片机的c语言韦根卡读卡程序 门禁系统

/******************************************************************************** 文件名称&#xff1a;Wiegand.c* 说明&#xff1a;本文件为韦根卡读卡程序。* 功能&#xff1a;实现对韦根卡的识别* 修改&#xff1a;无* 版本&#xff1a;1.0.0* 作者&#xff1a;YuanDo…