结构体定义
#include <stdio.h>
#include <stdlib.h>typedef struct node
{
char data;
struct node *lChild, *rChild;
} tNode,*tPointer;
递归先序创建二叉树,#代表NULL
void createTree(tPointer t)
{
char c;
scanf("%c",&c);if(c == '#')
{
t = NULL;
}
else
{
t = (tPointer)malloc(sizeof(tNode));
t -> data = c;
t -> lChild = NULL;
t -> rChild = NULL;t -> lChild = createTree(t -> lChild);//建立左子树
t -> rChild = createTree(t -> rChild);//建立右子树
}
return t;
}
递归遍历二叉树
void frontTree(tPointer t)
{
if (t)
{
printf("%c",t -> data);
frontTree(t -> lChild);
frontTree(t -> rChild);
}
}//递归中序遍历二叉树
void middleTree(tPointer t)
{
if (t)
{
middleTree(t -> lChild);
printf("%c",t -> data);
middleTree(t -> rChild);
}
}//递归后续遍历二叉树
void afterTree(tPointer t)
{
if (t)
{
afterTree(t -> lChild);
afterTree(t -> rChild);
printf("%c",t -> data);
}
}
递归删除二叉树
void destroyTree(tPointer t)
{
if(t)
{
if(t -> lChild)destroyTree(t -> lChild);//删除左子树
if(t -> rChild)destroyTree(t -> rChild);//删除右子树
free(t);
t = NULL;
}
}
主函数
int main()
{
tPointer t;
t = createTree(t);frontTree(t);
printf("\n");
middleTree(t);
printf("\n");
afterTree(t);destroyTree(t);
return 0;
}