重建二叉树

来源:互联网 发布:怎么制作mac系统u盘 编辑:程序博客网 时间:2024/04/30 21:08

二叉树的节点为:

struct BiTNode{TElemType data;struct BiTNode *leftchild,*rightchild;};

创建节点统一由Buynode() 函数完成:

BiTNode * Buynode(){BiTNode *s=new BiTNode();if(s == NULL){exit(1);}memset(s,0,sizeof(BiTNode));return s;}

一,由前序和中序遍历的字符串创建二叉树,返回二叉树头指针。

BiTNode * PreInCreateTree(char *s1,char *s2,int n)//n标识s2的长度{if(n == 0){return NULL;}int i=0;while(*s1 != s2[i]){++i;}BiTNode *h=Buynode();h->data=*s1;h->leftchild=PreInCreateTree(s1+1,s2,i);h->rightchild=PreInCreateTree(s1+i+1,s2+i+1,n-i-1);return h;}
二,由中序和后序遍历的字符串创建二叉树,返回二叉树头指针。

BiTNode * InPostCreateTree(char *s1,char *s2,int n){if(n == 0){return NULL;}int i=n-1;while(s2[n-1] != s1[i]){--i;}BiTNode *h=Buynode();h->data=s2[n-1];h->leftchild=InPostCreateTree(s1,s2,i);h->rightchild=InPostCreateTree(s1+i+1,s2+i,n-i-1);return h;}

//时间原因在这里不做实现方法的解释

//测试用例  

char *s1="ABCDEFGH";
char *s2="CBEDFAGH";
char *s3="CEFDBHGA";


原创粉丝点击