首页 > 代码库 > 数据结构重建二叉树
数据结构重建二叉树
重建二叉树,知道先序和中序 输出二叉树的后序。。
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int M = 1005;int i,j,k;int Max (int x ,int y){return x>y?x:y ;}void build(int n,char *s1,char *s2){ if(n<=0) return ; int p = strchr(s2,s1[0]) - s2; //找到根节点在中序遍历中的位置 build(p,s1+1,s2); build(n-p-1,s1+p+1,s2+p+1); printf("%c",s1[0]);}int main (){ char s1[30],s2[30]; scanf("%s%s",s1,s2); int len = strlen(s1); build(len,s1,s2);return 0;}
下面是NYOJ上的数据结构的一道题,知道中序和后序 求先序。。之前看什么指针真是醉了,不过昨天复习数据结构的时候,还是将它用结构体和指针实现了
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;const int M = 1005;typedef struct BTNode{ char data; BTNode *lchild,*rchild;};BTNode *Creat(char *post,char *in ,int n){ BTNode *s; char r,*p; int k; if(n<=0) return NULL; r = *(post + n-1); s = (BTNode *)malloc(sizeof(BTNode)); s->data =http://www.mamicode.com/ r; for(p=in;p<in+n;p++){ if(*p == r) break; } k = p - in; s->lchild = Creat(post,in,k); s->rchild = Creat(post+k,p+1,n-k-1); return s;}void pre(BTNode *s){ if(s!=NULL){ printf("%c",s->data); pre(s->lchild); pre(s->rchild); }}int main (){ char s1[30],s2[30]; BTNode *p; while(scanf("%s%s",s1,s2)!=EOF){ int len = strlen(s1); p = Creat(s1,s2,len); pre(p); printf("\n"); }return 0;}
数据结构重建二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。