头文件
#ifndef _TREE_H_
#define _TREE_H_
#include <stdlib.h>
typedef char T_data_t;
typedef struct Tree{
T_data_t data;
struct Tree *lchild,*rchild;
}tree;
//创建树
tree *create_tree();
//先序遍历
void first_tree(tree *root);
//中序遍历
void middle_tree(tree *root);
//后序遍历
void last_tree(tree *root);
#endif
功能函数
#include <stdio.h>
#include "tree.h"
//创建树 按先序遍历方式创建,有节点输入节点值,无节点输入 *
tree *create_tree()
{
T_data_t x;
scanf("%c",&x);
if('*' == x)
{
return NULL;
}
tree *root = (tree *)malloc(sizeof(tree));
if(NULL == root)
{
printf("root is fail\n");
return NULL;
}
root->data = x;
root->lchild = create_tree();
root->rchild = create_tree();
return root;
}
//先序遍历 打印树
void first_tree(tree *root)
{
if(NULL == root)
{
//printf("NULL\n");
return ;
}
printf("%c ",root->data);
first_tree(root->lchild);
first_tree(root->rchild);
}
//中需遍历 打印树
void middle_tree(tree *root)
{
if(NULL == root)
return ;
middle_tree(root->lchild);
printf("%c ",root->data);
middle_tree(root->rchild);
}
//后序遍历 打印树
void last_tree(tree *root)
{
if(NULL == root)
return ;
last_tree(root->lchild);
last_tree(root->rchild);
printf("%c ",root->data);
}