您的位置:首页 > 其它

重建二叉树(先序+中序 : 中序+后序)

2012-12-17 10:40 411 查看
由中序遍历 分别和前序遍历,后序遍历进行建树的方法:

// 由中序和后序遍历序列进行建树, 返回根结点指针

Node * InPostCreateTree(int *mid,int *post,int len){

if(len == 0)

return NULL;

int i=len-1;

while(post[len-1] != mid[i])

--i;

Node *h=NewNode();

h->data=post[len-1];

h->left=InPostCreateTree(mid,post,i);

h->right=InPostCreateTree(mid+i+1,post+i,len-i-1);

return h;

}

// 由前序和中序遍历序列进行建树, 返回根结点的指针

Node * PreInCreateTree(int *mid,int *pre,int len) //n标识s2的长度

{

if(len==0)

return NULL;

int i = 0;

while(*mid != pre[i])

++i;

Node *h=NewNode();

h->data= *mid;

h->left = PreInCreateTree(mid+1, pre, i);

h->right = PreInCreateTree(mid+i+1, pre+i+1, len-i-1);

return h;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: