注册 登录
编程论坛 C++教室

求帮助 关于二叉树的建立递归遍历的问题看了好久 就是看不到拿出错喽 望有经验的人指点

李亚宽 发布于 2012-03-13 15:36, 319 次点击
#include<stdio.h>
#include<stdlib.h>
#define DATATYPE2 char

typedef struct nodel
{
    DATATYPE2 data;
    struct nodel *lchild, *rchild;

}BTCHINALR;
BTCHINALR  *createbt(BTCHINALR *bt)//二叉树的建立
{
    struct nodel *s[30];
    int j,i;
    char x;
    printf("i,x=");scanf("%d,%c",&i,&x);
    while(i!= 0 && x!='$')
    {
        bt=(BTCHINALR*)malloc(sizeof(BTCHINALR));
        bt->data=x;
        bt->lchild=NULL;
        bt->rchild=NULL;
        s[i]=bt;
        if(i!=1)
        {
            j=i/2;
            if(i%2==0)
                s[j]->lchild=bt;
            else
                s[j]->rchild=bt;
        }
        printf("i,x=");scanf("%d,%c",&i,&x);
    }
    return s[1];
}

DATATYPE2 *preorder(BTCHINALR *bt)//递归先序遍历;
{
    if(bt!=NULL)
    {
        printf("%c  ",bt->data);
        preorder(bt->lchild);
        preorder(bt->rchild);
    }
}

void main()
{
    BTCHINALR t;
    BTCHINALR *p=&t;
    createbt(p);
    preorder(p);
 //   printf("%c",p->data);

}
0 回复
1