二叉树

//#include <stdio.h>
#include <iostream.h>
#include 
<malloc.h>

int i;

struct bt{
    
char elem;
    
struct bt *l;
    
struct bt *r;
}
;

//先序生成二叉树
struct bt * Creat(struct bt *t,char *elem){
    
//if(i>j)
    
//    return NULL;
    if(elem[i]=='#'){
        t
=NULL;
        i
++;
    }
else{        
        t
=(struct bt *)malloc(sizeof(struct bt));
        t
->elem=elem[i];
        i
++;
        t
->l=Creat(t->l,elem);
        t
->r=Creat(t->r,elem);
    }

    
return t;
}


//先序遍历输出二叉树
void TPreOut(struct bt *t){
    
if(t==NULL){
        cout
<<"#";
        
return;
    }
else{
        cout
<<t->elem;
        TPreOut(t
->l);
        TPreOut(t
->r);
    }

}


//中序遍历输出二叉树
void TMiOut(struct bt *t){
    
if(t==NULL){
        cout
<<"#";
        
return;
    }
else{
        TMiOut(t
->l);
        cout
<<t->elem;
        TMiOut(t
->r);
    }

}


//后序遍历输出二叉树
void TBaOut(struct bt *t){
    
if(t==NULL){
        cout
<<"#";
        
return;
    }
else{
        TBaOut(t
->l);
        TBaOut(t
->r);
        cout
<<t->elem;
    }

}



void main(){
    
struct bt *b;
    
struct bt *parent;
    
char elem[100]; 
    cout
<<"先序生成二叉树输入: ";
    cin
>>elem;
    i
=0;
    b
=Creat(b,elem);
    parent
=b;
    cout
<<"先序输出二叉树 ";
    TPreOut(parent);
    cout
<<" 中序输出二叉树 ";
    TMiOut(parent);
    cout
<<" 后序输出二叉树 ";
    TBaOut(parent);
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值