1020.Tree Traversals
来源:互联网 发布:车辆档案查询软件 编辑:程序博客网 时间:2024/05/02 22:15
【题意】
根据二叉树的后序、中序遍历得到它的层序遍历
【思路】
由后序、中序遍历构造出二叉树,再借助队列实现层序遍历即可
#include <iostream>#include <queue>using namespace std;#define MAXN 30int postorder[MAXN],inorder[MAXN];typedef struct node{int num;node *left;node *right;}BiNode;BiNode *bulidTree(int postLeft, int postRight, int inLeft, int inRight){BiNode *father;int leftNum,rightNum;father = (BiNode *)malloc(sizeof(BiNode));father->num = postorder[postRight];for(int i=inLeft; i<=inRight; i++){if(inorder[i]==postorder[postRight]){leftNum = i-inLeft;rightNum = inRight-i;break;}}if(leftNum){father->left = bulidTree(postLeft, postLeft+leftNum-1, inLeft, inLeft+leftNum-1);}else{father->left = NULL;}if(rightNum){father->right = bulidTree(postRight-rightNum, postRight-1, inRight-rightNum+1, inRight);}else{father->right = NULL;}return father;}int main(int argc, char const *argv[]){int n;BiNode *head;queue<BiNode*> result;cin >> n;for(int i=0; i<n; i++){cin >> postorder[i];}for(int i=0; i<n; i++){cin >> inorder[i];}head = bulidTree(0,n-1,0,n-1);result.push(head);bool first = true;while(!result.empty()){if(first){first = false;}else{cout << " ";}BiNode *tmp = result.front();cout << tmp->num;if(tmp->left!=NULL){result.push(tmp->left);}if(tmp->right!=NULL){result.push(tmp->right);}result.pop();}system("pause");return 0;}
0 0
- 1020. Tree Traversals
- 1020. Tree Traversals (25)
- 1020. Tree Traversals
- 【PAT】1020. Tree Traversals
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals
- PAT 1020. Tree Traversals
- 1020. Tree Traversals
- 1020. Tree Traversals
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020.Tree Traversals
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals
- Linux字符设备与块设备的区别与比较
- android Paint常用属性
- showDailog打开的页面出现回发
- 算法-部分概念
- App适配iOS8遇到的兼容问题
- 1020.Tree Traversals
- 数据结构 - 查找笔记
- 频谱、能谱、功率谱、倍频程谱、1/3 倍频程谱
- C语言读取整个文件到内存
- Python_使用csv模块解析csv文件
- Netra基于Rdk平台的软件框架设计
- 如何控制android系统中NavigationBar 的显示与隐藏
- 安装oracle报错
- Apache所有项目介绍