代码:
含注释,供参考
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
char c;
struct Node*Lchild;//左子树
struct Node*Rchild;//右子树
} BiTNode,*BiTree;
void PreCreate(BiTree*T);//先序创建二叉树
void Inorder(BiTree T);//中序遍历输出二叉树
int main()
{
BiTree BT;//二叉树
PreCreate(&BT);//先序创建二叉树
Inorder(BT);//中序遍历输出二叉树
return 0;
}
/*先序创建二叉树
*/
void PreCreate(BiTree*T)
{
char c;
*T=(BiTree)malloc(sizeof(BiTNode));//分配空间
c=getchar();
if(c=='#')
{
(*T)=NULL;
}
else
{
(*T)->c=c;
PreCreate(&((*T)->Lchild));先序遍历左子树
PreCreate(&((*T)->Rchild));//先序遍历右子树
}
}
/*中序遍历输出二叉树
*/
void Inorder(BiTree T)
{
if(T!=NULL)
{
Inorder(T->Lchild);//中序遍历左子树
printf("%c",T->c);
Inorder(T->Rchild);//中序遍历右子树
}
}