树的遍历 有后序遍历和中序遍历建立二叉树,并输出层次遍历
来源:互联网 发布:单片机无线模块 编辑:程序博客网 时间:2024/05/08 21:30
树的遍历 (25分)
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数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 <cstdio>#include <cmath>#include <queue>#include <stack>#include <map>#include <algorithm>#include <vector>#include <string>#include <cstring>#include <sstream>using namespace std;int n;int hou[50];int zhong[50];struct Btree{ int data; Btree* left; Btree* right;};typedef struct Btree Btree;int findindex(int *zhong,int x,int len){ for(int i=0;i<len;i++) { if(zhong[i]==x) { return i; } }}Btree* build(int *hou,int *zhong,int len){ if(len<=0) return NULL; Btree* tmp=new Btree; tmp->data=hou[len-1]; int index=findindex(zhong,hou[len-1],len); tmp->left=build(hou,zhong,index); tmp->right=build(hou+index,zhong+index+1,len-index-1); return tmp;}int ans[500];int cur;void cenorder(Btree *root){ queue<Btree*> Q; Q.push(root); while(!Q.empty()) { Btree *tmp=Q.front(); ans[cur++]=tmp->data; if(tmp->left!=NULL) { Q.push(tmp->left); } if(tmp->right!=NULL) { Q.push(tmp->right); } Q.pop(); }}int main(){ scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&hou[i]); } for(int i=0;i<n;i++) { scanf("%d",&zhong[i]); } Btree *root=build(hou,zhong,n); cenorder(root); for(int i=0;i<n;i++) { if(i==0) printf("%d",ans[i]); else printf(" %d",ans[i]); } printf("\n"); return 0;}
0 0
- 树的遍历 有后序遍历和中序遍历建立二叉树,并输出层次遍历
- 建立二叉树,并层次遍历输出
- 二叉树的建立及遍历(先序遍历、中序遍历、后续遍历、层次遍历)
- 层次遍历二叉树 并输出遍历结果
- 根据中序遍历和后续遍历,输出树的层次遍历
- 二叉树的先序遍历,后序遍历,中序遍历,层次遍历
- c++ 二叉树的构建 前序遍历 中序遍历 后续遍历 层次遍历
- 由前序和中序遍历建立二叉树并后序遍历输出二叉树
- 二叉树的后序遍历和层次遍历
- 二叉树的建立、遍历、深度、高度及层次遍历
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- 编程实现二叉树的建立,前序遍历,中序遍历和后续遍历
- 层次遍历二叉树,并输出节点所在的行数
- 二叉树层次遍历和深度遍历
- 二叉树层次遍历和深度遍历
- 二叉树的层次遍历输出
- 已知二叉树先序遍历,中序遍历创建二叉树并输出后序遍历
- 二叉树的遍历-按层次遍历
- viewpager的简单使用1
- 华为OJ:明明的随机数
- hadoop word count 学习总结
- ALGO-11算法训练 瓷砖铺放(递归)
- CSS3选择器/伪类的那些事~
- 树的遍历 有后序遍历和中序遍历建立二叉树,并输出层次遍历
- LeetCode 56. Merge Intervals
- 废柴
- mac环境编译ijkplayer库
- python结束进程模块(UNIX/WINDOWS)
- 1112. Stucked Keyboard (20)
- 三分天下如何选择vue,angular,react
- 华为OJ:字符串分割
- Java 字节码操控框架ASM(二):Parsing class