1 / 19
文档名称:

用递归和非递归算法实现二叉树的三种遍历.doc

格式:doc   大小:94KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

用递归和非递归算法实现二叉树的三种遍历.doc

上传人:pk5235 2022/1/23 文件大小:94 KB

下载得到文件列表

用递归和非递归算法实现二叉树的三种遍历.doc

相关文档

文档介绍

文档介绍:.
19 / 19
《数据结构与算法》实验报告三
——二叉树的操作与应用
实验目的
熟悉二叉链表存储结构的特征,掌握二叉树遍历操作与其应用
实验要求〔题目〕
说明:以下题目中〔一〕为全体必做,〔二〕〔三〕任选其一完成

CreateBiTree<&<<*bt>->rchild>>;
}
}
void PreOder<BiTree root>
{if<root!=NULL>
{printf<"%4c",root->data>;
PreOder<root->lchild>;
PreOder<root->rchild>;
}
}
main<>
{
BiTree root;
CreateBiTree<&root>;
printf<"先序遍历:\n">;
PreOder<root>;
}
递归算法:
#include""
#define PR printf
#define ERROR 0
.
5 / 19
#define MAX 100
/*============================建立各结构体===============================*/
typedefstruct node
{
char data; /*数据域*/
struct node *lchild;
struct node *rchild; /*结点的左右指针,分别指向结点的左右孩子*/
}BTNode;
typedef BTNode *DataType;
typedefstruct
{
DataType data[MAX];
int top;
}SeqStack;
SeqStack *s;
/*============================栈的操作===================================*/
SeqStack *createemptystacks<> /*创建一个空栈*/
{
SeqStack *s;
s=<SeqStack*>malloc<sizeof<SeqStack>>;
.
6 / 19
s->top=0;
return s;
}
int stackemptys<SeqStack *s> /*判栈空*/
{
return s->top==0;
}
int stackfulls<SeqStack *s> /*判栈满*/
{
return s->top==MAX;
}
void pushs<SeqStack *s,DataType x> /*进栈*/
{
if<stackfulls<s>>
PR<"over flow\n">;
else
s->data[s->top++]=x;
}
void pops<SeqStack *s> /*退栈*/
{
if<stackemptys<s>>
PR<"underflow\n">;
.
7 / 19
else
s->top--;
}
DataType gettops<SeqStack *s> /*栈非空时取栈顶元素*/
{
return s->data[s->top-1];
}
/*============================建立二叉树==================================*/
BTNode *createbintree<> /*输入扩充的先序序列,建立二叉树*/
{
BTNode *t;
char x;
scanf<"%c",&x>;
if<x=='#'>
t=NULL; /*读入#,返回空指针 */
else
{
t=<BTNode *>malloc<sizeof<BTNode>>; /*生成结点*/
t->data=x;
t->lchild=createbintree<>; /*构造左子树*/
t->rchild=createbintree<>; /*构造右子树*/
.
8 / 19
}
return<t>;
}
/*==============================树的遍历===================================*/
void preorder<BTNode *t> /*NLR 先序遍历*/
{
if<t!=NULL>
{
PR<" %