#include <stdio.h>
#include <stdlib.h>
typedef char Elemtype;
typedef int Status;
//二叉链表结构定义
typedef struct BiTNode //结点结构
{
Elemtype data; //结点数据
struct BiTNode *lchild, *rchild; //左右孩子指针
}BiTNode, *BiTree;
//前序遍历
void PreOrderTravers(BiTree T)
{
if(T == NULL)
return;
printf("%c", T->data); //显示结点数据
PreOrderTravers(T->lchild); //先序遍历左子树
PreOrderTravers(T->rchild); //先序遍历右子树
}
//中序遍历
void InOrderTravers(BiTree T)
{
if(T == NULL)
return;
InOrderTravers(T->lchild); //中序遍历左子树
printf("%c", T->data); //显示结点数据
InOrderTravers(T->rchild); //中序遍历右子树
}
//后序遍历
void PostOrderTravers(BiTree T)
{
if(T == NULL)
return;
PostOrderTravers(T->lchild); //后序遍历左子树
PostOrderTravers(T->rchild); //后序遍历右子树
printf("%d", T->data); //显示结点数据
}
//按先序输入构造二叉链表
void CreateBiTree(BiTree *T)
{
Elemtype ch;
scanf("%c", &ch);
if(ch == '#')
*T = NULL;
else
{
*T = (BiTNode *)malloc(sizeof(BiTNode));
if(!*T)
exit(0);
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
PreOrderTravers(T);
return 0;
}
#include <stdlib.h>
typedef char Elemtype;
typedef int Status;
//二叉链表结构定义
typedef struct BiTNode //结点结构
{
Elemtype data; //结点数据
struct BiTNode *lchild, *rchild; //左右孩子指针
}BiTNode, *BiTree;
//前序遍历
void PreOrderTravers(BiTree T)
{
if(T == NULL)
return;
printf("%c", T->data); //显示结点数据
PreOrderTravers(T->lchild); //先序遍历左子树
PreOrderTravers(T->rchild); //先序遍历右子树
}
//中序遍历
void InOrderTravers(BiTree T)
{
if(T == NULL)
return;
InOrderTravers(T->lchild); //中序遍历左子树
printf("%c", T->data); //显示结点数据
InOrderTravers(T->rchild); //中序遍历右子树
}
//后序遍历
void PostOrderTravers(BiTree T)
{
if(T == NULL)
return;
PostOrderTravers(T->lchild); //后序遍历左子树
PostOrderTravers(T->rchild); //后序遍历右子树
printf("%d", T->data); //显示结点数据
}
//按先序输入构造二叉链表
void CreateBiTree(BiTree *T)
{
Elemtype ch;
scanf("%c", &ch);
if(ch == '#')
*T = NULL;
else
{
*T = (BiTNode *)malloc(sizeof(BiTNode));
if(!*T)
exit(0);
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int main()
{
BiTree T;
CreateBiTree(&T);
PreOrderTravers(T);
return 0;
}