自己对这一块的知识掌握的不是很好,所以就整理了一下,下面是代码;


 

#include<stdio.h>
#include<malloc.h>

typedef struct tree_node
{
char data;
struct tree_node *lchild,*rchild;
}BT_node;

BT_node *tree;


//树的创建
BT_node *creat_tree(BT_node *tree)
{
char c;
c = getchar();

if(c == '*')
{
tree = NULL;
}
else
{
tree = (struct tree_node *)malloc(sizeof(struct tree_node));
tree->data = c;
tree->lchild = creat_tree(tree->lchild);
tree->rchild = creat_tree(tree->rchild);
}
return(tree);
}

//遍历根节点
void visit_node(BT_node *tree)
{
printf(" ");
putchar(tree->data);
printf("\t");
}


//前序遍历
void pre_tree(BT_node *tree)
{
if(!tree)
{
return;
}
else
{
visit_node(tree);
pre_tree(tree->lchild);
pre_tree(tree->rchild);
}
}

//中序遍历
void mid_tree(BT_node *tree)
{
if(!tree)
{
return;
}
else
{
mid_tree(tree->lchild);
visit_node(tree);
mid_tree(tree->rchild);
}
}

//后序遍历
void after_tree(BT_node *tree)
{
if(!tree)
{
return;
}
else
{
after_tree(tree->lchild);
after_tree(tree->rchild);
visit_node(tree);
}
}


int main()
{
printf("请输入树节点...\n");
tree = creat_tree(tree);

if(tree)
{
printf("前序遍历\n");
pre_tree(tree);
printf("\n");

printf("中序遍历\n");
mid_tree(tree);
printf("\n");

printf("后序遍历\n");
after_tree(tree);
printf("\n");
}
printf("\n");
return 0;
}