/******************遍历二叉树*****************/
#include"stdio.h"
#include"stdlib.h"
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
/****************Operator********************/
BiTree CreateBiTree()
{
BiTree T;
ElemType ch;
scanf(" %c",&ch); //在scanf函数中%c前有一个空格 表明一次一个的输入
//若是缺少那一个空格 将得不到正确结果
if(ch=='#')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->data=ch;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
}
return T;
}
void PreOrderTraverse(BiTree T) //前序遍历
{
if(T!=NULL)
{
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiTree T) //中序遍历
{
if(T!=NULL)
{
InOrderTraverse(T->lchild);
printf("%c ",T->data);
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree T) //后序遍历
{
if(T!=NULL)
{
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c ",T->data);
}
}
main(void)
{
BiTree T;
T=CreateBiTree();
PreOrderTraverse(T);
printf("\n");
InOrderTraverse(T);
printf("\n");
PostOrderTraverse(T);
}
/********************************************************/
/**********************测试用例**************************/
/************ ABC###DE##F## ***************/
/********************************************************/
数据结构之二叉树的生成与遍历
最新推荐文章于 2022-03-23 20:56:54 发布