bitree CreatBiTree.docx
《bitree CreatBiTree.docx》由会员分享,可在线阅读,更多相关《bitree CreatBiTree.docx(7页珍藏版)》请在冰豆网上搜索。
![bitree CreatBiTree.docx](https://file1.bdocx.com/fileroot1/2023-1/28/30d51ac2-3558-4b53-913b-71dfc8e2096a/30d51ac2-3558-4b53-913b-71dfc8e2096a1.gif)
bitreeCreatBiTree
bitreeCreatBiTree()
{
bitreet;
charch;
scanf("%c",&ch);
if(ch=='') t=NULL;
else{
t=(bitnode*)malloc(sizeof(bitnode));
t->data=ch;
t->lchild=CreatBiTree();
t->rchild=CreatBiTree();
}
returnt;
}
<2>,显示二叉树算法:
(以括号的形式显示二叉树)
voidDispTree(bitreet)
{
if(t!
=NULL)
{
printf("%c",t->data);
if(t->lchild!
=NULL)
{
printf("(");
DispTree(t->lchild);
printf(")");
}
else{
printf("(");
printf("()");
}
if(t->rchild!
=NULL)
{
printf(",");
DispTree(t->rchild);
printf(")");
}
}
}
<3>,二叉树先序遍历的递归算法
voidPreOrderTraverse(bitreebt){
if(bt!
=NULL){
printf("%c",bt->data);
PreOrderTraverse(bt->lchild);
PreOrderTraverse(bt->rchild);
}
}
<4>,二叉树中序遍历的递归算法
voidInOrderTraverse(bitreebt){
if(bt!
=NULL){
InOrderTraverse(bt->lchild);
printf("%c",bt->data);
InOrderTraverse(bt->rchild);
}
}
<5>,二叉树后序遍历的递归算法
voidPostOrderTraverse(bitreebt){
if(bt!
=NULL){
PostOrderTraverse(bt->lchild);
PostOrderTraverse(bt->rchild);
printf("%c",bt->data);
}
}
4,算法描述的程序代码:
#include
#include
#defineM50
#defineNULL0
typedefintelemtype;
typedefstructbtnode
{
elemtypedata;
structbtnode*lchild,*rchild;
}bitnode,*bitree;
bitreeCreatBiTree()
{
bitreet;
charch;
scanf("%c",&ch);
if(ch=='') t=NULL;
else{
t=(bitnode*)malloc(sizeof(bitnode));
t->data=ch;
t->lchild=CreatBiTree();
t->rchild=CreatBiTree();
}
returnt;
}
voidDispTree(bitreet)
{
if(t!
=NULL)
{
printf("%c",t->data);
if(t->lchild!
=NULL)
{
printf("(");
DispTree(t->lchild);
printf(")");
}
else{
printf("(");
printf("()");
}
if(t->rchild!
=NULL)
{
printf(",");
DispTree(t->rchild);
printf(")");
}
}
}
voidPreOrderTraverse(bitreebt){
if(bt!
=NULL){
printf("%c",bt->data);
PreOrderTraverse(bt->lchild);
PreOrderTraverse(bt->rchild);
}
}
voidInOrderTraverse(bitreebt){
if(bt!
=NULL){
InOrderTraverse(bt->lchild);
printf("%c",bt->data);
InOrderTraverse(bt->rchild);
}
}
voidPostOrderTraverse(bitreebt){
if(bt!
=NULL){
PostOrderTraverse(bt->lchild);
PostOrderTraverse(bt->rchild);
printf("%c",bt->data);
}
}
intmain(void)
{
bitreet;
clrscr();
t=CreatBiTree();
printf("nn");
DispTree(t);
printf("nn");
printf("AfterPreOrderTraverse()'sorderis:
:
n");
PreOrderTraverse(t);
printf("nAfterInOrderTraverse()'sorderis:
:
n");
InOrderTraverse(t);
printf("nAfterPostOrderTraverse()'sorderis:
:
n");
PostOrderTraverse(t);
return0;
}
5,对程序代码的测试:
6,实验结果分析与评价(该部分不够填写.请填写附页):
A
对二叉树进行输入,输出,先序遍历,中序遍历,后序遍历操作,二叉树如图所示:
B
C
D
E
则输入的字符序列为:
AB━D━━C━E,其中“━”表示空格字符。
输出结果如上图所示。