#include <stdio.h>
#include <stdlib.h>
#define N 100
struct biTreeNode
{
char data;//二叉树元素为字符型,存放A-Z等
struct biTreeNode *leftChild,*rightChild;
};
struct biTreeNode *root;//根结点指针
char node[N]={“ABD##C##”};//预设一棵二叉树,扩展前序遍历序列
//函数定义
void initBiTree(void)//初始化一棵空二叉树
{
root=NULL;//根结点为空
}
//—————————-
//递归形式建立一个二叉树
//输入一个扩展二叉树的前序遍历序列
struct biTreeNode *creatBiTree(struct biTreeNode *T)
{
char ch;
static int i=0;
//fflush(stdin);
//scanf(“%c”,&ch);
ch=node[i];
i++;
if(ch==””#””)
{
T=NULL;// . 代表空子树;
}
else
{
T=(struct biTreeNode *)malloc(sizeof(struct biTreeNode));//分配一个node的空间
if(!T)exit(0);
T->data = ch;//数据域为ch
T->leftChild=creatBiTree(T->leftChild);//递归建立左子树
T->rightChild=creatBiTree(T->rightChild);//递归建立右子树
}
return T;
}
//——————————–
void pre_order(struct biTreeNode *T)//前序遍历二叉树
{
if(T==NULL)//递归调用结束条件
return;
else
{
printf(“%c “,T->data); //访问根结点T的数据域
pre_order(T->leftChild); //前序递归遍历T的左子树
pre_order(T->rightChild); //前序递归遍历T的右子树
}
}
int main()
{
initBiTree();//初始化一棵空二叉树
root=creatBiTree(root);
printf(“二叉树创建成功!\n”);
pre_order(root);
return 0;
}