btree.h
#ifndef __BTREE_H__
#define __BTREE_H__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char data;
struct node *lchild;
struct node *rchild;
}node, *node_p;
node_p create_node(char data);
node_p create_btree();
void pri_show(node_p T);
void ino_show(node_p T);
void pos_show(node_p T);
#endif
btree.c
#include "btree.h"
//创建节点(node)
node_p create_node(char data)
{
node_p ne = (node_p)malloc(sizeof(node));
if(ne == NULL)
{
printf("入参为空");
return NULL;
}
ne -> data = data;
return ne;
}
//创建二叉树(btree)
node_p create_btree()
{
char data = '\0';
scanf(" %c",&data);
if(data == '#')
return NULL;
node_p ne = create_node(data);
ne -> lchild = create_btree();
ne -> rchild = create_btree();
return ne;
}
//二叉树的先序遍历
void pri_show(node_p T)
{
if(T == NULL)
return;
printf("%c",T -> data);
pri_show(T -> lchild);
pri_show(T -> rchild);
}
//二叉树的中序遍历
void ino_show(node_p T)
{
if(T == NULL)
return;
ino_show(T -> lchild);
printf("%c", T -> data);
ino_show(T -> rchild);
}
//二叉树的后续遍历
void pos_show(node_p T)
{
if(T == NULL)
return;
pos_show(T -> lchild);
pos_show(T -> rchild);
printf("%c", T -> data);
}
main.c
#include "btree.h"
int main()
{
node_p T = create_btree();
pri_show(T);
putchar(10);
ino_show(T);
putchar(10);
pos_show(T);
putchar(10);
return 0;
}