目录
代码实现
树的先序输入,先序输出、中序输出、与后序输出
tree.h
typedef char data_t;
typedef struct node_t {
data_t data;
struct node_t * left;
struct node_t * right;
}bitree;
bitree *tree_create();
void preorder(bitree *r);
void inorder(bitree *r);
void posorder(bitree *r);
tree.c
#include <stdio.h>
#include <stdlib.h>
#include "tree.h"
bitree * tree_create(){
data_t ch;
bitree *r;
```
scanf("%c",&ch);
if(ch=='#')
return NULL;
if ((r=(bitree *)malloc(sizeof(bitree)))==NULL){
printf("malloc failed\n");
return NULL;
}
r->data = ch;
r->left = tree_create();
r->right = tree_create();
return r;
```
}
void preorder(bitree *r){
if(r==NULL){
return;
}
printf("%c",r->data);
preorder(r->left);
preorder(r->right);
}
void inorder(bitree *r){
if(r==NULL){
return;
}
preorder(r->left);
printf("%c",r->data);
preorder(r->right);
}
void posorder(bitree *r){
if(r==NULL){
return;
}
preorder(r->left);
preorder(r->right);
printf("%c",r->data);
}
test.c
#include <stdio.h>
#include <stdlib.h>
#include "tree.h"
int main(int argc, const char *argv[])
{
bitree *r;
if ((r=tree_create())==NULL)
return -1;
```
preorder(r);
puts("");
inorder(r);
puts("");
posorder(r);
puts("");
return 0;
```
}