PAT(Advanced Level) 1020 Tree Traversals 解题报告
来源:互联网 发布:java开发语音 编辑:程序博客网 时间:2024/06/03 06:00
题目链接http://pat.zju.edu.cn/contests/pat-a-practise/1020
本题要求根据二叉树的后序遍历序列和中序遍历序列重建二叉树,然后层序遍历之,并输出。
实现之前,需要各位熟悉这个过程(自行查看相关书籍),能够在白纸上模拟。
笔者使用树的链式存储给出C++实现。
#include<iostream>#include<vector>#include<queue>using namespace std;struct BinaryNode{int data;BinaryNode *left;BinaryNode *right;BinaryNode(int d,BinaryNode *l=NULL,BinaryNode *r=NULL):data(d),left(l),right(r){}};BinaryNode *root;vector<int> levelorder;BinaryNode* CreateTree(int post[],int s1,int e1,int in[],int s2,int e2){if(s1>e1) //边界情形不是s1==e1,而是s1>e1!return NULL;BinaryNode *binnode=new BinaryNode(post[e1]);if(s1<e1){int i;for(i=s2;i<=e2;i++)if(in[i]==post[e1])break;int len=i-s2;binnode->left=CreateTree(post,s1,s1+len-1,in,s2,i-1);binnode->right=CreateTree(post,s1+len,e1-1,in,i+1,e2);}return binnode;}void LevelOrder(BinaryNode *r){queue<BinaryNode*> q;q.push(r);while(!q.empty() ){BinaryNode *temp=q.front();levelorder.push_back(temp->data);q.pop();if(temp->left!=NULL)q.push(temp->left);if(temp->right!=NULL)q.push(temp->right);}}int main(){int n;cin>>n;int postorder[32],inorder[32];for(int i=0;i<n;i++)cin>>postorder[i];for(int i=0;i<n;i++)cin>>inorder[i];root=CreateTree(postorder,0,n-1,inorder,0,n-1);LevelOrder(root);cout<<levelorder[0];for(int i=1;i<n;i++)cout<<" "<<levelorder[i];cout<<endl;//system("pause");return 0;}
- PAT(Advanced Level) 1020 Tree Traversals 解题报告
- Pat(Advanced Level)Practice--1020(Tree Traversals)
- 浙大PAT (Advanced Level) Practise 1020Tree Traversals (25)
- PAT (Advanced Level) Practise 1020 Tree Traversals (25)
- PAT (Advanced Level) Practise 1020 Tree Traversals (25)
- 【PAT Advanced Level】1020. Tree Traversals (25)
- PAT (Advanced Level) 1020. Tree Traversals (25)
- 【PAT】【Advanced Level】1020. Tree Traversals (25)
- pat advanced 1020 Tree Traversals
- 解题报告-PAT- Tree Traversals Again(1086)
- 1020. Tree Traversals (25) @ PAT (Advanced Level) Practise
- PAT Advanced Level 1020. Tree Traversals (25)(Java 实现)
- PAT (Advanced Level) Practise 1020. Tree Traversals (25)
- Pat(Advanced Level)Practice--1086(Tree Traversals Again)
- 1020. Tree Traversals (25)——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1086 Tree Traversals Again (25)
- 浙大 PAT Advanced level 1020. Tree Traversals (25)
- PAT (Advanced Level) Practise 1020. Tree Traversals (25)
- 阿拉伯文排版规则
- Linux设备驱动模型 bus_type bus_attribute device driver
- 最长公共子序列
- C# tagcontrol 隐藏 tagpage
- const关键字
- PAT(Advanced Level) 1020 Tree Traversals 解题报告
- orc 触发器
- 软件设计能力提升之设计匠艺
- ios UICollectionView的使用
- OCP-1Z0-051-V9.02-23题
- Oracle临时表
- VC2008 Windows Media Player控件的使用技巧
- Cisco Packet Tracer 界面介绍+使用介绍
- 关于 GUITOOL 修改日志