#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode //结点结构
{
char data; //结点数据
struct BiTNode *lchild,*rchild; //左右孩子指针
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T); //创建二叉树
void PreOrderTraverse(BiTree T); //二叉树前序遍历
int main(void)
{
BiTree T;
CreateBiTree(&T);
puts("Binary Tree creation is complete.");
puts("Binary tree:");
PreOrderTraverse(T);
return 0;
}
void CreateBiTree(BiTree *T)
{
char input;
scanf("%c",&input);
if(input=='#')
T=NULL;
else
{
(*T)=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=input;
CreateBiTree(&(*T)->lchild); //构造左子树
CreateBiTree(&(*T)->rchild); //构造右子树
}
}
void PreOrderTraverse(BiTree T)
{
if(T==NULL)
return;
printf("%c ",T->data); //显示结点数据,可以更改为其它操作
PreOrderTraverse(T->lchild); //再先序遍历左子树
PreOrderTraverse(T->rchild); //最后先序遍历右子树
}
哎,自己傻了,创建的时候应该用*T=NULL,而不是T=NULL。