码迷,mamicode.com
首页 > 其他好文 > 详细

三种建树方法

时间:2020-07-12 16:46:02      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:code   建立   二叉树   个数   前序遍历   style   i++   uil   node   

前序中序序列建立二叉树:

//in[]和pre[]数组存放二叉树的中序和前序遍历序列
node* build(int preL,int preR,int inL,int inR){
    if(preL>preR)
        return NULL;
    node* root=(node*)malloc(sizeof(node));
    int val=pre[preL];
    root->val=val;
    int x;
    for(int i=inL;i<=inR;i++){
        if(in[i]==val){
            x=i;
            break;
        }
    }
    x=x-inL;
    root->l=build(preL+1,preL+x,inL,inL+x-1);
    root->r=build(preL+1+x,preR,inL+x+1,inR);
    return root;
}

 后序中序序列建立二叉树:

//in[]和post[]数组存放二叉树的中序和后序遍历序列
node* build(int postL,int postR,int inL,int inR){
    if(inL>inR)
        return NULL;
    node* root=(node*)malloc(sizeof(node));
    root->val=post[postR];
    int x;
    for(int i=inL;i<=inR;i++){
        if(in[i]==root->val){
            x=i;
            break;
        }
    }
    x=x-inL;    //x表示左子树结点的个数 
    root->l=build(postL,postL+x-1,inL,inL+x-1);
    root->r=build(postL+x,postR-1,inL+x+1,inR);
    return root;
}

 

三种建树方法

标签:code   建立   二叉树   个数   前序遍历   style   i++   uil   node   

原文地址:https://www.cnblogs.com/foodie-nils/p/13288623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!