根据后续和中序遍历输出先序遍历
来源:互联网 发布:淘宝stttyle 编辑:程序博客网 时间:2024/05/16 17:14
7-1 根据后序和中序遍历输出先序遍历(25 分)
本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。
输入格式:
第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。
输出格式:
在一行中输出Preorder:
以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。
输入样例:
72 3 1 5 7 6 41 2 3 4 5 6 7
输出样例:
Preorder: 4 1 3 2 6 5 7
#include<bits/stdc++.h>using namespace std;int pre[35];int k=0;void PreOrder(int a[],int b[],int n){ if(n<=0) return ; else { int temp=*(a+n-1);//后序的最后一个元素为先序的第一个元素 *(a+n-1)相当于a[n-1] pre[k++]=temp; int flag=0; while(flag<n) { if(*(b+flag)==temp)//b[flag]==temp break; flag++; } int size1=flag; int size2=flag; //根据根节点把后序遍历和中序遍历分出左右根子树 PreOrder(a,b,flag);//将数组a的前flag个元素和b的前flag个元素传入,即为左子树 PreOrder(a+flag,b+flag+1,n-flag-1);//同理为右子树 }}int main(){ int N; cin>>N; int post[32]; int inorder[32]; for(int i=0; i<N; i++) { cin>>post[i]; } for(int i=0; i<N; i++) { cin>>inorder[i]; } PreOrder(post,inorder,N); cout<<"Preorder:"; for(int i=0; i<N; i++) cout<<" "<<pre[i];}
这个问题的解决方法不只一种,这是用数组做的比较简便,后面还会写别的做法
阅读全文
0 0
- 根据后续和中序遍历输出先序遍历
- 根据先序遍历和中序遍历求后续遍历
- 根据先序遍历和中序遍历结果求后续遍历模板
- 根据中序遍历和后续遍历,输出树的层次遍历
- UVA536 水,根据先序和中序得到二叉树的后续遍历
- 数据结构课设 根据后序和中序遍历输出先序遍历
- 【二叉树】 根据先序和中序遍历输出后序遍历
- 根据后序和中序遍历输出先序遍历
- 根据后序和中序遍历输出先序遍历
- 根据后序和中序遍历输出先序遍历
- 根据后序和中序遍历输出先序遍历
- 5-2 根据后序和中序遍历输出先序遍历 (25分)
- 根据后序和中序遍历输出先序遍历
- 根据后序和中序遍历输出先序遍历
- 根据后序和中序遍历输出先序遍历(25 分)
- PTA| 根据后序和中序遍历输出先序遍历(25 分)
- 根据后序和中序遍历输出先序遍历
- PTA-根据后序和中序遍历输出先序遍历
- 【设计模式】原型模式
- poj3669 Meteor Shower(bfs java)
- python中sort函数、sorted函数、argsort函数
- [BFS] POJ 3278
- 354. Russian Doll Envelopes
- 根据后续和中序遍历输出先序遍历
- Python环境下安装pip 及常见问题
- 栈和队列及其C++实现(一)
- 八大排序算法
- Machine Learning 学习之决策树 ID3树
- 【POJ 2891】Strange Way to Express Integers 【 CRT 证明详解】
- Struts2通配符和它的各种坑
- STM32内存之一
- 算法储备之Bellman-Ford算法