关键词不能为空

当前您在: 主页 > 英语 >

树形结构及其应用

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-25 09:00
tags:

-

2021年1月25日发(作者:围魏救赵)

树形结构及其应用


树形结构及其应用

实验题目:树型结构的建立与遍历设计成
绩报告成绩指导老师

一、

实验目的
1
、学会二叉树这一数据结构的用法,掌握二
叉树的存储结构,包括 二叉树顺序存储结构和链式存储结构。
2

熟练掌握二叉树与广义表之间的相互转换方 法。
3
、熟练掌握二叉
树的先序、中序、后序,递归与非递归遍历算法。
4< br>、学会二叉树
线索化方法,并掌握线索二叉树的存储结构。
5
、熟练掌握线索二
叉树的先序、中序、后序的遍历算法。

二、实验要求及实验环境
1
、实验要求:
(1)
至少用两种方法, 编写建立二叉树的二叉链表存储结构的程
序,并用广义表的形式显示并保存二叉树;
(2) < br>采用二叉树的二叉链表存储结构,编写程序实现二叉树的先
序、中序和后序遍历的递归和非递归算 法以及层序遍历算法,并
显示二叉树和相应的遍历序列;
(3)
在二叉树的二叉链表 存储结构基础上,编写程序实现二叉树
的先序、中序和后序线索链表存储结构建立的算法,并用广义表< br>的形式显示和保存二叉树的线索链表;
(4)
在二叉树的线索链表存储结构上,编写程 序分别实现求一个
结点的先序(中序、后序)的后继结点的算法;
(5)

(4)

1



1



基础上,编写程序实现对线索二叉树进行先序、中序和后序
遍历的非递归算法,并显 示线索二叉树和相应的遍历序列。
2
、实
验环境:
Windows
下 的
dev-c++


三、设计思想(本程序中的用到的所有数据类型的定义 ,主
程序的流程图及各程序模块之间的调用关系)
Create a bit-
tree1
.逻辑设计主程序流程递归中序线索化

线索化递归中序 线
索化递归先序线索化以广义表格式输出树递归非递归先序遍历递
归非递归中序遍历递归非递归 后序遍历输出节点的后继节点遍历
后序线索化遍历中序线索化遍历先序线索化线索二叉树链式结构
定义
typedef struct bitnode{ char data; struct bitnode
*lchild,*rchild; bool LTag,RTag; }bnode,*btree;2
.物理设

Btree create()
创建一棵树并赋值应用数组栈
btree
a[MAX]Void printBTree(btree T)
以广义表形式打印树
Void
preorder(btree t)
先序递归遍历
Void inorder(btree t)
中序递
归遍历
Void postorder(btree t)
后序递归遍历
btree
copy(btree t)
复制二叉树
Int main
()主函数
Void
preorder2(btree t)
先序非递归遍历
Void inorder2(btree t)

序非递归遍历
Void postorder2(btree t)
后序非递归遍历层序遍

void levelorder(btree t)void prethreading(btree p)
先序
线索化
Btree preorderthreading(btree prehead,btrreeT);
先序
线索化
void prethreading(btree p)
先序线索化
Btree
inorderthreading(btree prehead,btrreeT);
中序线索化
void

1



1



prethreading(btree p)
先序线索化
Btree
postorderthreading(btree prehead,btrreeT);
后序线索化寻找
字符
X
处于线索树中位置
btree locate(char a,btree t)
中序线
索化后继节点
Btree innext(btree p);
输出后继节点先序线索化
后继节点
Btree prenext(btree p)Void printlist(btree t,bool
a)
广义表形式输出线索化后的二叉树

四、测试结果

五、系统不足与经验体会不能连续输入多个广义表。函数设
计不够简洁。

没有实现非递归线索化

加注释后修改代码方便六、附录:源
代码(带注释)
#include
h>#include、< br>h>#define MAX100typedef struct bitnode{ char data; struct
bitnode *lchild,*rchild; bool LTag,RTag; }bnode,*btree;
//
建立树线索化结构体
struct bitnode *s[MAX];struct bitnode
*pre=NULL; btree create(){ char ch; scanf(
if(ch==#)
return NULL; else { btree
bt=(btree)malloc(sizeof(bnode)); if(bt==NULL)
return NULL; else{ bt->data=ch; bt->lchild=create();
bt->rchild=create(); return bt; } }}btree create2(){ int
i,j; btree bt,t; char ch; printf(
输入一个整数和一个字符
n

1



1



{ bt=(btree)malloc(sizeof(bnode)); if(bt==NULL)
return NULL; else { bt->data=ch; bt->lchild=NULL; bt-
>rchild=NULL; s[i]=bt; if(i==1)
t=bt; else { j=i/2; if(i%2==0)
s[j]->lchild=bt; else s[j]->rchild=bt; } } pri ntf(

入一个整数和一个字符
n
t;}//
复制一棵二叉树btree copy(btree BT){ btree
tree;if(BT==NULL)
tree=NULL;else{tree=(btr ee)malloc(sizeof(bnode));tree
->data=BT->data;t ree->lchild=copy(BT->lchild);tree-
>rchild=copy (BT->rchild); }return tree; }//
层序遍历并输出
void levelorder(btree bt){ btree t[MAX]; //
建立队列
int
front=0,rear=1; btree p; t[0]=bt; while(front//
如果队列不为空的话,访问结点值再出队列
{ p=t[front];
printf(
//
左孩子进队列(如果有的话),右孩子进队列(如果有的
话)
t[rear++]=t[front]->lchild; if(p->rchild)
t[rear++]=t[front]->rchild; ++front; }} //
先序递归遍
历并输出
void preorder(btree bt)
{ if (NULL!=bt)
{ printf(
preorder(bt->rchild); } } //
先序非递归遍历并输出
void

1



1



preorder2(btree bt){ btree t[MAX]; //
建立数组栈
btree p;
p=bt; int i=0; while(p||i>0)
{ while(p)
/*
根结点先进栈,访问结点值,左孩子依次进栈,直到最左
的孩子进栈
*/ { printf(
>lchild; } if(i>0)
/*
出栈
*/ { p=t[i];i; p=p->rchild; } } //
栈 顶指针出
栈,退至上一层,然后访问右子树,右子树访问完成之后,退至
上一层,直至栈空,节 点访问完成
} //
中序递归遍历并输出
void
inorder(btree bt){ if (NULL!=bt)
{ inorder(bt->lchild); printf(
inorder(bt->rchild); } } //
中序非递归遍历并输出
void
inorder2(btree bt){ btree t[MAX]; //
建立数组栈
btree p;
p=bt; int i=0; while(p||i>0)
{ while(p)
/*
根结点先进栈,左孩子依次进栈,直到最左的孩子进栈

*/ { ++i; t[i]=p; p=p->lchild; } if(i>0)
/*
出栈
*/ { p=t[i];i; printf(
>rchild; } } //
栈顶指针出 栈,退至上一层,访问结点值,然后
访问右子树,右子树访问完成之后,退至上一层,直至栈空,节点访问完成
} //
后序递归遍历并输出
void postorder(btree
bt){ if (NULL!=bt)

1



1

-


-


-


-


-


-


-


-



本文更新与2021-01-25 09:00,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/565007.html

树形结构及其应用的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文