#ifndef _1_H
#define _1_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <stdlib.h>
typedef struct tree
{
int data;
struct tree *lchild;
struct tree *rchild;
}bitree;
bitree *initTree2(bitree *r);
//bitree *initTree(bitree *r,int a[],int len,char flag[]);
void PREORDER(bitree *r);
void INORDER(bitree *r);
void POSTORDER(bitree *r);
void NOORDER(bitree *r);
#ifdef __cplusplus
}
#endif
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "1.h"
#if 0
bitree *initTree(bitree *r,int a[],int len,char flag[])
{
int i = 0;
bitree *c[len],*tmp;
r = (bitree *)malloc(sizeof(bitree));
r->lchild = NULL;
r->rchild = NULL;
c[i] = r;
for(i = 0 ; i < len ; i++)
{
c[i]->data = a[i];
//printf("c[%d]->data=%d\n",i,c[i]->data);
//printf("----------------\n");
if('l' == flag[i])
{
tmp = (bitree *)malloc(sizeof(bitree));
tmp->lchild = NULL;
tmp->rchild = NULL;
c[i]->lchild = tmp;
if(i+1<len)
{
c[i+1] = c[i]->lchild;
}
c[i]->rchild = NULL;
}
else if('r' == flag[i])
{
tmp = (bitree *)malloc(sizeof(bitree));
tmp->lchild = NULL;
tmp->rchild = NULL;
c[i]->rchild = tmp;
if(i+1<len)
{
c[i+1] = c[i]->rchild;
}
c[i]->lchild = NULL;
}
else if('b' == flag[i])
{
tmp = (bitree *)malloc(sizeof(bitree));
tmp->lchild = NULL;
tmp->rchild = NULL;
c[i]->lchild = tmp;
if(i+1<len)
{
c[i+1] = c[i]->lchild;
}
tmp = (bitree *)malloc(sizeof(bitree));
tmp->lchild = NULL;
tmp->rchild = NULL;
c[i]->rchild = tmp;
if(i+2<len)
{
c[i+2] = c[i]->rchild;
}
}
else if('o' == flag[i])
{
c[i]->lchild = NULL;
c[i]->rchild = NULL;
}
}
return r;
}
#endif
bitree *initTree2(bitree *r)
{
int data;
printf("please input the int:");
scanf("%d",&data);
if(data!='#')
{
r = (bitree*)malloc(sizeof(bitree));
if(NULL == r)
{
return;
}
r->data = data;
initTree2(r->lchild);
initTree2(r->rchild);
}
else
{
r = NULL;
}
return r;
}
void PREORDER(bitree *r)
{
if(NULL == r)
{
return;
}
printf("%d\n",r->data);
POSTORDER(r->lchild);
POSTORDER(r->rchild);
}
void INORDER(bitree *r)
{
if(NULL == r)
{
return;
}
INORDER(r->lchild);
printf("%d\n",r->data);
INORDER(r->rchild);
}
void POSTORDER(bitree *r)
{
if(NULL == r)
{
return;
}
POSTORDER(r->lchild);
POSTORDER(r->rchild);
printf("%d\n",r->data);
}
void NOORDER(bitree *r)
{
}
int main()
{
bitree *r;
//int i,L;
//int a[] = {1,2,3,4,5,6};
//char b[] = {'b','b','l','o','o','o'};
//L = sizeof(a)/4;
//r = initTree(r,a,L,b);
//printf("%d\n",r->data);
//printf("%d\n",r->lchild->data);
//printf("%d\n",r->lchild->lchild->data);
r = initTree2(r);
PREORDER(r);
printf("--------------\n");
//INORDER(r);
//printf("--------------\n");
//POSTORDER(r);
//printf("--------------\n");
return 0;
}