PAT 1020. Tree Traversals (25)
来源:互联网 发布:windows垃圾清理软件 编辑:程序博客网 时间:2024/06/03 17:22
题意:给出后序和中序遍历,求水平序列。
思路:
用递归做,注意root要事先建立。还有就是递归处的边界选择。
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<stack>#include<vector>#include<queue>#include<string>#include<map>using namespace std;#define INF 99999999#define M 300struct node{int data;struct node *lchild,*rchild;};int posto[M],mido[M];struct node* buildtree(int ml,int mr,int pl,int pr){int i=0;if(ml>mr || pl >pr)return NULL;int proot=posto[pr];for(i=ml;i<=mr;i++)if(mido[i]==proot){break;}struct node *Node;Node = (struct node*)malloc(sizeof(struct node));Node->data=proot;Node->rchild = buildtree(i+1,mr,pr-1-(mr-i-1),pr-1);Node->lchild = buildtree(ml,i-1,pl,pl+(i-1-ml));return Node;}void levelprint(struct node *root){struct node *Node;vector<int> ans;queue<struct node*> q;q.push(root);while(!q.empty()){Node = q.front();q.pop();ans.push_back(Node->data);if(Node->lchild != NULL)q.push(Node->lchild);if(Node->rchild !=NULL)q.push(Node->rchild);}int i;for(i=0;i<ans.size();i++){printf("%d",ans[i]);if(i!=ans.size()-1)printf(" ");else printf("\n");}}//start 21:54//end 22:25int main(){int i,n;struct node *root;cin>>n;for(i=0;i<n;i++)scanf("%d",&posto[i]);for(i=0;i<n;i++)scanf("%d",&mido[i]);root = (struct node*)malloc(sizeof(struct node));root = buildtree(0,n-1,0,n-1);levelprint(root);return 0;}
阅读全文
0 0
- pat 1020. Tree Traversals (25)
- 【PAT】1020. Tree Traversals (25)
- PAT: 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals(25)
- 【PAT】1020. Tree Traversals (25)
- [PAT]1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- pat 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- pat 1020. Tree Traversals (25)
- 【PAT】1020. Tree Traversals (25)
- pat 1020. Tree Traversals (25)
- PAT 1020. Tree Traversals (25)
- 1020. Tree Traversals (25) PAT+tree
- 【PAT】1020. Tree Traversals
- PAT 1020. Tree Traversals
- PAT 1020. Tree Traversals
- python-抓取页面的图片
- java入门
- A child container failed during start每次在本项目中添加web.xm就出现,只能在server中改xml
- Jython:Java和Python代码的粘合剂
- 灰度变换与空间滤波
- PAT 1020. Tree Traversals (25)
- 如何准备阿里的社招技术面试
- mysql清空查询缓存
- 逗比日记_提高情商
- Activity页面之间数据传递
- 10分钟搭建OpenGrok代码搜索引擎
- 内核调试 之 搭建qmeu 调试环境
- zhihu-spider之Lombok——zhihu-spider开源项目使用技术详解(其一)
- byteBuffer的理解和使用