1.编写程序任意输入二叉树的结点个数和结点值,构造一棵二叉树,采用三种递归遍历算法(前序、中序、后序)

2022-08-10 社会 78阅读
tree.h

#include
#include
#define MAX_NODE 50
typedef struct BiTNode
{
char data;
BiTNode *lchild,*rchild;

}BiTNode,*BiTree;
BiTree CreateBiTree();
void InorderTraverse( BiTree T);

creatTree.cpp
#include"tree.h"

BiTree CreateBiTree()
{

BiTree T;
char ch;
scanf("%c",&ch);
if (ch=='#')
{
T=NULL;
return T;

}

else
{
T=(BiTNode *)malloc(sizeof(BiTNode));

if (T==NULL)
{
printf("树创建失败!");
T=NULL;

return T;
}

T->data=ch;
T->lchild=CreateBiTree();
T->rchild=CreateBiTree();
return T;
}
}

InorderTraverse.cpp
#include"tree.h"
void InorderTraverse( BiTree T)
{
BiTree stack[MAX_NODE] ,p=T ;
int top=0 , bool1=1 ;
if (T==NULL)
printf("Binary Tree is Empty!\n");
else
{
do
{
while (p!=NULL)
{
stack[++top]=p ;
p=p->lchild ;
}

if (top==0)
{
bool1=0 ;
}else{
p=stack[top] ;
top-- ;
printf("%c",p->data);
p=p->rchild ;
}
} while (bool1!=0) ;
}
}

main_fun.cpp
#include"tree.h"
int main()
{

BiTree T= CreateBiTree();
InorderTraverse(T);
return 0;

}
traverse.cpp
#include"tree.h"
void PreorderTraverse(BiTree T)
{
if (T!=NULL)
{

PreorderTraverse(T->lchild) ;
printf("%c",T->data);
PreorderTraverse(T->rchild) ;
}
}

例如 输入 AB###
输出BA
先序输入 中序输出
可以修改遍历方式 来改变输出结果。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com