L2-006. 树的遍历
来源:互联网 发布:吕鑫讲的c语言咋样 编辑:程序博客网 时间:2024/06/01 22:06
L2-006. 树的遍历
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:
4 1 6 3 5 7 2
#include<iostream>#include<queue>using namespace std;#define N 50struct node{ int date; node* l; node* r;};int post[N],in[N];int n;node* create(int postL,int postR,int inL,int inR){ if(postL>postR) return NULL; node* root = new node; root->date = post[postR]; int k; for(k=inL;k<=inR;k++){ if(in[k]==post[postR]) break; } int numLeft = k-inL; root->l =create(postL,postL+numLeft-1,inL,k-1); root->r = create(postL+numLeft,postR-1,k+1,inR); return root;}int flag=0;void bfs(node* root){ queue<node*> q; q.push(root); while(q.size()){ node* now =q.front(); q.pop(); if(flag)cout<<" "<<now->date; else{ cout<<now->date; flag=1; } if(now->l!=NULL) q.push(now->l); if(now->r!=NULL) q.push(now->r); }}int main(){ cin>>n; int i; for(i=0;i<n;i++) cin>>post[i]; for(i=0;i<n;i++) cin>>in[i]; node* root = create(0,n-1,0,n-1); bfs(root);}
阅读全文
0 0
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- L2-006. 树的遍历
- 独木舟上的旅行-OJ
- 树形结构json格式赋值,传值
- 插入排序和二分插入排序
- JavaScript实现动态表格的创建
- solr6.6的介绍与使用
- L2-006. 树的遍历
- Ngrok之Screenの简单使用-yellowcong
- Android常见的设计模式
- ZOJ 2879 Capture the Flag (模拟题)
- C++ 易混淆点(二)
- android如何获取系统开机时间
- iOS 中防止循环引用
- 【Unity3D入门教程】游戏开发利器UGUI的基本使用方法
- css写二级列表