c语言构造树及树的三种遍历

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<>

#include<>

#include <>

#define error 0

#define ok 1

typedef struct BiTNode

{

char data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

int CreateBiTree(BiTree &T)

{

char ch;

scanf("%c",&ch);

if(ch=='#') T=NULL;

else

{

if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(error);

T->data=ch;

CreateBiTree(T->lchild);

CreateBiTree(T->rchild);

}

return ok;

}

void PreOrderBiTree(BiTree T)

{

if(T)

{

printf("%c",T->data);

PreOrderBiTree(T->lchild);

PreOrderBiTree(T->rchild);

}

}

void InOrderBiTree(BiTree T)

{

if(T)

{

InOrderBiTree(T->lchild); //中序遍历左子树

printf("%c",T->data); //访问结点

InOrderBiTree(T->rchild); //中序遍历右子树}

}

void PostOrderBiTree(BiTree T)

{

if(T)

{

PostOrderBiTree(T->lchild);

PostOrderBiTree(T->rchild);

printf("%c",T->data);

}

}

main()

{

int i;

BiTree T;

printf("\t请输入树的各元素:\n\t");

CreateBiTree(T);

do

{

printf(" /*****************************/\n");

printf("\t1键:先序输出; \n\t2键:中序输出;\n\t3键:后序输出!\n\t0键:退出程序!\n");

printf("\t请输入你的选择:\n\t");

scanf("%d",&i);

switch(i)

{

case 1:printf("\n\t你选择的是先序输出!! \n");

printf("\n\t输出结果为:\n");

printf("\t");

PreOrderBiTree(T);break;

case 2:printf("\n\t你选择的是中序输出!! \n");

printf("\n\t输出结果为:\n");

printf("\t");

InOrderBiTree(T);break;

case 3:printf("\n\t你选择的是后序输出!! \n");

printf("\n\t输出结果为:\n");

printf("\t");

PostOrderBiTree(T);break;

}

printf("\n");

}while(i!=0);

}

相关文档
最新文档