通过前序建立二叉树,采用三种方法实现对树的遍历。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char data;
node* lchild;
node* rchild;
}*Bitree, BitreeNode;
void creatBiTree(Bitree &T)
{
char c;
//printf("enter the char:\n");
c = getchar();
if ('#' == c)
{
T = NULL;
}
else
{
//T = new BitreeNode;
T = (BitreeNode*)malloc(sizeof(BitreeNode));
T->data = c;
creatBiTree(T->lchild);
creatBiTree(T->rchild);
}
}
//前序
void pre_tree(Bitree T)
{
if (T)
{
printf("%c ", T->data);
pre_tree(T->lchild);
pre_tree(T->rchild);
}
}
//中序
void mid_tree(Bitree T)
{
if (T)
{
mid_tree(T->lchild);
printf("%c ", T->data);
mid_tree(T->rchild);
}
}
//hou序
void L_tree(Bitree T)
{
if (T)
{
L_tree(T->lchild);
L_tree(T->rchild);
printf("%c ", T->data);
}
}
int main()
{
BitreeNode* Tree1;
creatBiTree(Tree1);
printf("建立完成。\n前序:\n");
pre_tree(Tree1);
}