BIT 1031 Binary Tree Traversals
2013-01-30 19:44
309 查看
题意就是给一个二叉树的前序遍历序列和中序遍历序列
9
1 2 4 7 3 5 8 9 6
4 7 2 1 8 5 9 3 6
对前序序列
1 2 4 7 3 5 8 9 6
1一定是该树的根节点
1在中序遍历中又在4 7 2之后
于是有
一层层递归下去就好了。。
9
1 2 4 7 3 5 8 9 6
4 7 2 1 8 5 9 3 6
对前序序列
1 2 4 7 3 5 8 9 6
1一定是该树的根节点
1在中序遍历中又在4 7 2之后
于是有
一层层递归下去就好了。。
#include<algorithm> #include<iostream> #include<cstdio> using namespace std; int preorder[1100];//先序 int inorder[1100];//中序 class node { public: int val; node *left; node *right; }; void buildTree(node *tree,int prel,int prer,int inl,int inr) { //此时tree里应以prel为根节点,并在i中序序列中找到prel tree->val=preorder[prel]; tree->left=NULL; tree->right=NULL; int i; for(i=inl;i<=inr;i++) { if(inorder[i]==preorder[prel]) { break; } } if(prel+1<=i-inl+prel&&inl<=i-1) { tree->left=new node; buildTree(tree->left,prel+1,i-inl+prel,inl,i-1); } if(i-inl+prel+1<=prer&&i+1<=inr) { tree->right=new node; buildTree(tree->right,i-inl+prel+1,prer,i+1,inr); } } void postTravel(node *p) { if(p==NULL) { return; } postTravel(p->left); postTravel(p->right); printf("%d ",p->val); } int main() { int n; while (~scanf("%d",&n)) { for (int i = 0; i < n; i++) { scanf("%d",&preorder[i]); } for (int i = 0; i < n; i++) { scanf("%d",&inorder[i]); } node *tree; tree=new node; buildTree(tree,0,n-1,0,n-1); postTravel(tree->left);//后序遍历开始 postTravel(tree->right); printf("%d\n",tree->val); } return 0; }
相关文章推荐
- bit 1031 Binary Tree Traversals
- HDU-1710 Binary Tree Traversals 二叉树遍历
- hdu 1710 Binary Tree Traversals 前序遍历和中序推后序
- hdu-1710-Binary Tree Traversals
- Binary Tree Traversals(二叉树_知前序中序求后序)
- hdu 1710 Binary Tree Traversals
- hdu1710 Binary Tree Traversals ----- 二叉树前序中序推后序
- ACM 数据结构-并查集 HDU 1710 Binary Tree Traversals .
- Binary Tree Traversals
- HDU 1710 Binary Tree Traversals(二叉树的后序遍历)
- HDOJ1710. Binary Tree Traversals(二叉树遍历&重构)
- Binary Tree Traversals(HDU1710)二叉树的简单应用
- HDU 1710 Binary Tree Traversals
- HDU---1710-Binary Tree Traversals (二叉树遍历)
- hdu_1710_Binary Tree Traversals(二叉树的重构)
- HDU 1710 Binary Tree Traversals
- Data Structure Binary Tree: Construct Full Binary Tree from given preorder and postorder traversals
- HDOJ1710 Binary Tree Traversals
- hdu 1710 Binary Tree Traversals
- hdu1710 Binary Tree Traversals(二叉树遍历)