1020. Tree Traversals (25)
来源:互联网 发布:进化算法和遗传算法 编辑:程序博客网 时间:2024/04/19 03:25
题目链接:https://www.patest.cn/contests/pat-a-practise/1020
题目大意:已知树的后序遍历和中序遍历,求该树的层次遍历
解题思路:
- 先根据后序和中序确定树的结构
- 再进行层次遍历即可
代码如下:
#include<iostream>#include<vector>#include<queue>using namespace std;struct Node{ int data; Node* lchild; Node* rchild;};int post[32];//后序遍历序列int in[32];//中序遍历序列Node* create(int pL,int pR,int iL,int iR){//pL,pR为后序序列左右端点;iL,iR为中序序列左右端点 if(pL>pR)return NULL; Node* root=new Node;//建立根节点 root->data=post[pR]; int index; for(index=iL;index<=iR;index++){//在中序序列中找到根节点 if(in[index]==post[pR]) break; } int numleft=index-iL; root->lchild=create(pL,pL+numleft-1,iL,index-1);//递归地建立左子树 root->rchild=create(pL+numleft,pR-1,index+1,iR);//递归地建立右子树 return root;}int firstflag=0;//标记是否输出的为第一个节点void levelOrder(Node *p){ queue<Node*> que; que.push(p); while(!que.empty()){ Node* tmp=que.front(); que.pop(); if(firstflag!=0)//若不是第一个节点,先输出空格 cout<<" "; cout<<tmp->data;//再输出值 firstflag=1; if(tmp->lchild!=NULL) que.push(tmp->lchild); if(tmp->rchild!=NULL) que.push(tmp->rchild); }}int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>post[i]; } for(int i=0;i<n;i++){ cin>>in[i]; } Node* root=create(0,n-1,0,n-1); levelOrder(root); return 0;}
阅读全文
0 0
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 1020. Tree Traversals (25)
- 使用CMake进行android native开发
- 链式队列的基本应用(接上篇)
- 顺序栈
- 如何验证 names(名称), e-mails(邮件), 和 URLs
- 面试题:介绍JS基础数据类型
- 1020. Tree Traversals (25)
- GCC编译ARM篇
- Python-队列
- UWP 如何访问本地代理
- 关于系统调用的open的应用举例
- Android面试--2017最新
- 【深度学习看手相】台湾学生获奖 AI 项目是科学还是伪科学? 搜狐科技 08-06 12:44 1新智元报道 来源: medium,facebook 编译:胡祥杰 张易 【新智元导读】本周日带来一个有
- java switch case 中使用String
- 如何让用户在点击"提交(submit)"按钮提交数据前保证所有字段正确输入