#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
//二叉树的建立,按前序遍历的方式建立二叉树
void CreateBiTree(BiTree &T)
{
ElemType ch;
scanf("%c",&ch);
if (ch == '#')
T = NULL;
else
{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = ch;//生成结点
CreateBiTree(T->lchild);//构造左子树
CreateBiTree(T->rchild);//构造右子树
}
}
//表示对遍历到的结点数据进行的处理操作,此处操作是将树结点前序遍历输出
void operation1(ElemType ch)
{
printf("%c",ch);
}
//递归方式前序遍历二叉树
void PreOrderTraverse(BiTree T)
{
if (T == NULL){
return;
}
operation1(T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
//递归方式中序遍历二叉树
void InOrderTraverse(BiTree T)
{
if(T==NULL){
return;
}
InOrderTraverse(T->lchild);
operation1(T->data);
InOrderTraverse(T->rchild);
}
//递归方式后序遍历二叉树
void PostOrderTraverse(BiTree T)
{
if(T==NULL){
return;
}
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
operation1(T->data);
}
int main()
{
BiTree T;
printf(" 请以前序遍历的方式输入扩展二叉树:(类似输入AB#D##C##)");
CreateBiTree(T);// 建立二叉树,没有树,怎么遍历
printf("递归前序遍历输出为:");
PreOrderTraverse(T);//进行前序遍历
printf(" ");
printf("归中序遍历输出为:");
InOrderTraverse(T);
printf(" ");
printf("递归后序遍历输出为:");
PostOrderTraverse(T);
printf(" ");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
//二叉树的建立,按前序遍历的方式建立二叉树
void CreateBiTree(BiTree &T)
{
ElemType ch;
scanf("%c",&ch);
if (ch == '#')
T = NULL;
else
{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = ch;//生成结点
CreateBiTree(T->lchild);//构造左子树
CreateBiTree(T->rchild);//构造右子树
}
}
//表示对遍历到的结点数据进行的处理操作,此处操作是将树结点前序遍历输出
void operation1(ElemType ch)
{
printf("%c",ch);
}
//递归方式前序遍历二叉树
void PreOrderTraverse(BiTree T)
{
if (T == NULL){
return;
}
operation1(T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
//递归方式中序遍历二叉树
void InOrderTraverse(BiTree T)
{
if(T==NULL){
return;
}
InOrderTraverse(T->lchild);
operation1(T->data);
InOrderTraverse(T->rchild);
}
//递归方式后序遍历二叉树
void PostOrderTraverse(BiTree T)
{
if(T==NULL){
return;
}
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
operation1(T->data);
}
int main()
{
BiTree T;
printf(" 请以前序遍历的方式输入扩展二叉树:(类似输入AB#D#C#)");
CreateBiTree(T);// 建立二叉树
printf("递归前序遍历输出为:");
PreOrderTraverse(T);//进行前序遍历
printf(" ");
printf("归中序遍历输出为:");
InOrderTraverse(T);
printf(" ");
printf("递归后序遍历输出为:");
PostOrderTraverse(T);
printf(" ");
return 0;
}