hdu 1710 Binary Tree Traversals(由先序和中序建树)
2014-07-13 20:56
399 查看
题意:已知先序和中序,求后序遍历结果
要注意输出时格式问题(两数之间有一个空格,最后一个数后无空格)
具体思想请参考上一篇博客
链接:hdu 1710
代码:
要注意输出时格式问题(两数之间有一个空格,最后一个数后无空格)
具体思想请参考上一篇博客
链接:hdu 1710
代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct stu { int c; struct stu *l,*r; }Tree; int j; void creat(Tree **T,int *z,int m1,int n1,int *x,int m2,int n2) { int i; *T=NULL; if(m1==n1){ *T=(Tree *)malloc(sizeof(Tree)); (*T)->c=z[m1]; (*T)->l=(*T)->r=NULL; } else{ for(i=m1;i<=n1;i++) if(z[i]==x[m2]) break; *T=(Tree *)malloc(sizeof(Tree)); (*T)->c=x[m2]; if(i-1>=m1&&i+1<=n1){ creat(&(*T)->l,z,m1,i-1,x,m2+1,m2+i-m1); creat(&(*T)->r,z,i+1,n1,x,m2+i-m1+1,n2); } else if(i-1<m1&&i+1<=n1){ creat(&(*T)->r,z,i+1,n1,x,m2+i-m1+1,n2); (*T)->l=NULL; } else if(i-1>=m1&&i+1>n1){ creat(&(*T)->l,z,m1,i-1,x,m2+1,m2+i-m1); (*T)->r=NULL; } } } void printh(Tree *T,int n) { if(T!=NULL){ printh(T->l,n); printh(T->r,n); printf("%d",T->c); j++; if(j<n) printf(" "); else printf("\n"); } } int main() { int x[1010],z[1010],i,n; Tree *T=NULL; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++) scanf("%d",&x[i]); for(i=0;i<n;i++) scanf("%d",&z[i]); creat(&T,z,0,n-1,x,0,n-1); j=0; printh(T,n); } return 0; }
相关文章推荐
- HDU - 1710 Binary Tree Traversals (给前序,中序,求后序)
- HDU 1710-Binary Tree Traversals
- 二叉树 遍历 hdu-1710-Binary Tree Traversals
- HDU--1710 -- Binary Tree Traversals
- hdu 1710 Binary Tree Traversals
- HDU-1710-Binary Tree Traversals
- HDU-1710-Binary Tree Traversals
- HDU 1710 Binary Tree Traversals
- hdu 1710 Binary Tree Traversals
- hdu 1710 Binary Tree Traversals
- hdu-1710-Binary Tree Traversals
- hdu——1710——Binary Tree Traversals
- hdu 1710:Binary Tree Traversals
- 已知树的前序和中序求后序 hdu 题目1710 Binary Tree Traversals
- HDU 1710 Binary Tree Traversals
- HDU 1710-Binary Tree Traversals(重建二叉树)
- HDU-1710 Binary Tree Traversals 二叉树遍历
- hdu 1710 Binary Tree Traversals
- hdu 1710 Binary Tree Traversals
- 【二叉树之遍历的应用】HDU 1710---Binary Tree Traversals