二叉树的创建与访问算法设计

时间:2019-05-12 07:24:23下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《二叉树的创建与访问算法设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《二叉树的创建与访问算法设计》。

第一篇:二叉树的创建与访问算法设计

内蒙古工业大学信息工程学院

实 验 报 告

课程名称: 数据结构(C语言版)实验名称: 二叉树的创建与访问算法设计 实验类型: 验证性□ 综合性□ 设计性□ 实验室名称: c机房 班级:xxxxxxxxx 学号: xxxxxxxxxxxxxxx 姓名: xxx 组别: 同组人:

成绩:

实验日期: 2011年 6月

内蒙古工业大学信息工程学院

预习报告成绩: 指导教师审核(签名): 2011年 月 日

预习报告

一.实验目的

本实验以二叉树的创建与访问算法设计作为实验内容,掌握树型结构的实现方法,培养解决负责问题的能力。

二.实验内容

1、编写生成二叉树的函数,二叉树的元素从键盘输入;

2、编写在二叉树中插入元素的函数;

3、编写在二叉树中删除元素的函数;

4、编写遍历并输出二叉树的函数。

方案一采用递归算法实现二叉树遍历算法。方案二采用非递归算法实现二叉树遍历算法。三.实验要求

1、掌握树型结构的机器内表示;

2、掌握树型结构之上的算法设计与实现;

3、列表对比分析两种数据结构的相应操作的时间复杂度、空间复杂度,阐明产生差异的原因。四.问题描述

从键盘输入二叉树的元素,建立二叉树,实现二叉树的遍历算法。

五.基本要求

实现以下基本操作:

(1)从键盘输入二叉树的元素,建立二叉树。(2)实现二叉树的先序遍历算法。

内蒙古工业大学信息工程学院

实验报告成绩: 指导教师审核(签名): 2011年 月 日

实验报告

一 程序清单

#include “stdio.h” #include “string.h” #include #define NULL 0

typedef struct BiTNode{ char data;

struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;

BiTree Create(BiTree T){

char ch;

ch=getchar();if(ch=='#')T=NULL;else{

if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))printf(“Error!”);T->data=ch;

T->lchild=Create(T->lchild);T->rchild=Create(T->rchild);}

return T;}

int Depth(BiTree T){

int dep=0,depl,depr;if(!T)dep=0;else {

depl=Depth(T->lchild);depr=Depth(T->rchild);

dep=1+(depl>depr?depl:depr);}

return dep;}

void main(){ BiTree T;int dep;printf(“请输入您要创建的二叉树!!n

'#'表示空元素!n”);T=Create(T);

printf(“nn您要求的二叉树的深度:”);dep=Depth(T);

printf(“%dnn”,dep);} }

内蒙古工业大学信息工程学院

二 测试结果

三 调试程序出现的问题及解决的方法

编程中出现很多的编译错误,主要采用对每个函数调试,设断点,运用自己的程序中,让我更好的掌握了递归算法。四 实验心得体会

通过这次试验,让我巩固了链式存储结构和递归算法的使用,用模块化思路设计程序,编写程序要小心谨慎,要细化到每个函数,通过多次调试,才使得整个程序正确运行,达到预期结果。

第二篇:实验一线性表的创建与访问算法设计

内蒙古工业大学信息工程学院

四、编译程序:

#include #include #define MAXSIZE 100

typedef char ElemType;typedef struct LNode

//定义单链表结点类型 {

ElemType data;

struct LNode *next;}LinkList;

LinkList *CreatlinkR(LinkList *L)

//用尾插法建立带头结点的单链表 {

LinkList *s, *r;char ch;r =(LinkList *)malloc(sizeof(LinkList));

//创建头结点

L = r;s = r;r->next = NULL;printf(“单链表元素值为单个字符, 连续输入,$为结束字符:”);while((ch = getchar())!= '$'){

r =(LinkList *)malloc(sizeof(LinkList));

//创建新结点

r->data = ch;

r->next = NULL;

s->next = r;

s = r;

} r->next=NULL;

//终端结点

return(L);}

void Sort(LinkList *h)

//单链表元素排序 { LinkList *p=h->next,*q,*t;

if(p!=NULL){

t=p->next;

p->next=NULL;

p=t;

while(p!=NULL)

{

t=p->next;

q=h;

第 页

内蒙古工业大学信息工程学院

while(q->next!=NULL&&q->next->data

data)

q=q->next;

//在有序表中找插入*p的前驱结点*q

p->next=q->next;

//将*p插到*q之后

q->next=p;

p=t;

} } }

void DispList(LinkList *L)

//输出单链表L {

LinkList *p=L->next;

while(p!=NULL){

printf(“%c ”,p->data);

p=p->next;} }

LinkList *Union(LinkList *La,LinkList *Lb,LinkList *Lc)

{ LinkList *pa=La->next,*pb=Lb->next,*s,*tc;

Lc=(LinkList *)malloc(sizeof(LinkList));

tc=Lc;while(pa!=NULL&&pb!=NULL){

if(pa->data

data)

{

s=(LinkList *)malloc(sizeof(LinkList));

s->data=pa->data;

tc->next=s;

tc=s;

pa=pa->next;

}

else if(pa->data>pb->data)

{

s=(LinkList *)malloc(sizeof(LinkList));

s->data=pb->data;

tc->next=s;

tc=s;

pb=pb->next;

}

else

{

第 页

//求两有序集合的并集 //复制结点

内蒙古工业大学信息工程学院

s=(LinkList *)malloc(sizeof(LinkList));

s->data=pa->data;

tc->next=s;

tc=s;

pa=pa->next;

//重复元素只复制一个

pb=pb->next;

} } if(pb!=NULL)

//复制余下结点

pa=pb;while(pa!=NULL){

s=(LinkList *)malloc(sizeof(LinkList));

s->data=pa->data;

tc->next=s;

tc=s;

pa=pa->next;

} tc->next=NULL;return(Lc);}

LinkList *InsterSect(LinkList *La,LinkList *Lb,LinkList *Lc)

//求两有序集合的交集 {

LinkList *pa=La->next,*pb,*s,*tc;

Lc=(LinkList *)malloc(sizeof(LinkList));

tc=Lc;

while(pa!=NULL){

pb=Lb->next;

while(pb!=NULL&&pb->data

data)

pb=pb->next;

if(pb!=NULL&&pb->data==pa->data)

//若pa结点值在pb中

{

s=(LinkList *)malloc(sizeof(LinkList));

s->data=pa->data;

tc->next=s;

tc=s;

}

pa=pa->next;}

tc->next=NULL;return(Lc);

第 页

内蒙古工业大学信息工程学院

}

LinkList *Subs(LinkList *La,LinkList *Lb,LinkList *Lc)

//求两有序集合的差集 {

LinkList *pa=La->next,*pb,*s,*tc;

Lc=(LinkList *)malloc(sizeof(LinkList));

tc=Lc;

while(pa!=NULL){

pb=Lb->next;

while(pb!=NULL&&pb->data

data)

pb=pb->next;

if(!(pb!=NULL&&pb->data==pa->data))

{

s=(LinkList *)malloc(sizeof(LinkList));

s->data=pa->data;

tc->next=s;

tc=s;

}

pa=pa->next;} tc->next=NULL;return(Lc);}

void main(){

LinkList *La,*Lb,*Lc;

int num=0,loop,j;loop=1;La=CreatlinkR(La);Lb=CreatlinkR(Lb);Sort(La);Sort(Lb);

printf(“有序集合A={ ”);

DispList(La);

printf(“}n”);

printf(“有序集合B={ ”);

DispList(Lb);printf(“}n”);while(loop){

printf(“请选择您要执行的操作:1.求并集

scanf(”%d“,&j);printf(”n%d“,j);

第 页

//若pa结点值不在pb中 2.求交集

3.求差集n”);

内蒙古工业大学信息工程学院

if(j>=1&&j<=3)

switch(j)

{

case 1: Lc=Union(La,La,Lc);

printf(“集合A与集合B的并集C={ ”);

DispList(Lc);

printf(“}n”);

break;

case 2: Lc=InsterSect(La,Lb,Lc);

printf(“集合A与集合B的交集C={ ”);

DispList(Lc);

printf(“}n”);

break;

case 3: Lc=Subs(La,Lb,Lc);

printf(“集合A与集合B的差集C={ ”);

DispList(Lc);

printf(“}n”);

break;

} printf(“0.结束

1.继续n”);scanf(“%d”,&loop);printf(“n”);} }

五、运行结果:

1.输入两个无序集合,排序后输出:

第 页

内蒙古工业大学信息工程学院

2.求集合的并集:

3.选1继续:

第 页

内蒙古工业大学信息工程学院

4.求集合的交集:

5.求集合的差集:

第 页

内蒙古工业大学信息工程学院

6.选0结束:

第 页

第三篇:二叉树的构造函数算法BiTree

template

BiTree ::BiTree(BiNode *root){

creat(root);

}

template

void BiTree ::Creat(BiNode *root){

cin>>ch;

if(ch=='# ')root=NULL;//建立一棵空树else {

root=new BiNode;//生成一个结点root->data=ch;

Creat(root->lchild);//递归建立左子树Creat(root->rchild);//递归建立右子树}

}

第四篇:算法描述与设计教案

课型:新课 《算法与程序设计》(选修)人教版

教学目标:

1.进一步理解什么是;算法,知道算法的多样性

2.能够对设计的算法做简装的评价

3.学会利用自然语言、流程图和伪代码来描述算法

教学内容

1.了解什么是算法及其特征 2.学习三种描述算法语言

教学重点:通过例子设计算法

教学难点:三种描述算法语言的使用

课时数:1课时

正课讲解

一、算法是“灵魂”

1.算法存在于人们生活中,如:上街购物、顾客付款、营业员(主)找银等。

2.“韩信点兵问题”有不同的求解过程,就有不同的算法。

有N个人,除以3,5,7,分别余2,3,2,求N。

3.算法——解决问题的方法和步骤。

算法是尼克劳斯.沃斯(N.Writh)提出的,他指出:算法+数据结构=程序。

(即算法不能单独构成程序,它必须和数据结构合二为一)

4.算法的发现

时间:公元前3000年~公元前1500年 地点:巴比伦

巴比伦人求解“算法”的过程:先用解代数方法,再计算实际数目,最后写上一句短句“这就是一个过程”。

5.算法的特征

我们曾在必须修课中提过一点算法,如:冒泡排序法。

例:计算1+2+3+„„+100=?

分析:这个算法有限制范围,可以在有限时间内完成,这是算法的第一个特征:有穷性。计算此算法可以用纸笔、算盘、运算器

和计算机来完成,且计算过程是多样的,但结果是唯一的。这就是算法的可行性、确定性。

计算方法:

⑴把这100个数按顺序相加。

⑵用凑数法:1+99=100,2+98=100,3+97=100,„„,49+51,最后只剩下50和100。

⑶令S=0,使1≤n≤100,先执行S=S+n ⑴,再执行n=n+1 ⑵

n=1,S=0时,S(0)=1 n=2,S=1时,S(0)=3 n=3,S=3时,S(0)=6

n=4,S=6时,S(0)=10 n=5,S=10时,S(0)=15 n=6,S=15时,S(0)=21„„

算法的另外一个特征:输入、输出。

练习:水仙花数问题,如153=1^3+5^3+3^3,分析它应满足什么条件才能使用此方法?

二、如何描述算法

1.用自然语言描述算法

⑴自然语言——人们日常生活中使用的语言。

⑵此种语言的特点:通俗语易懂,缺乏直观性和简洁,且易产生歧义。

使用此种语言的注意事项:描述要求尽可能精确,详尽。

例:用自然语言描述凯撒密码的原理

第1步:输入26个英文字母,它们分别对应1~26个数学。

第2步:令a=1,k=3,n=26。

第3步:使a的取值范围为1≤a≤26,F(a)=(a+k)mod n,转第5步。

第4步:a=a+1,转第3步。

第5步:输出F(a)相对应的数字。

第6步:把数学转化成相当的字母,输出字母。

第7步:累计字母出现顺序,转第4步。

练习:现有一串字母“PROGRAM”给它加密,请设计算法,用自然语言描述。

2.用流程图描述算法

⑴特点:描述算法形象、直观,容易理解。

⑵流程图符号

3.用伪代码描述算法

特点:描述的算法简、易懂,修改容易,容易转化为程序语言代码。

例:分析课本经9页算法描述

第一个条件:y mod 4=0

判断闰年的条件:⑴y不能被100整除;⑵y能被400整除且y能被400整除。

判断不是闰年的条件:⑴y mod 4=0 且y mod 100=0,但y不能被400整除;⑵y不能被4整除。

表示条件判断语句 表示循环处理语句:

IF 条件 THEN 执行语句一 Do While 条件循环语句

ELSE执行语句二 Loop

END IF

条件语句中可以包含多个子语句

实践:用表格比较自然语言、流程图和伪代码3种描述方法的优缺点。

第五篇:数据结构算法设计与分析

数据结构算法设计与分析、计算机网络、计算机组成原理、操作系统原理、编译原理、数据库原理及应用、软件工程、软件测试等计算机基础理论课程;

网页制作、程序设计Java、JSP程序设计、Oracle、XML程序设计、计算机网络、SSH(Struts+Spring+Hibernate)框架、Java EE程序设计、Ajax程序设计、Linux+PHP+MySQL程序设计、Android手机开发、UML系统分析与设计、性能测试、自动化软件测试、软件质量保证、毕业设计及项目综合实训等。

数据结构、计算机网络、计算机组成原理、操作系统原理、编译原理、数据库原理及应用、金融学概论、西方经济学等基础理论课程;

网页制作、程序设计Java、JSP程序设计、J2EE程序设计、SQL Server数据库、Oracle数据库、Linux操作系统、UML系统分析与设计、软件工程、XML程序设计、SSH框架、金融市场学、ERP财务管理、管理信息系统、投资银行学、商业银行学、国际金融管理、毕业设计及项目综合实训等专业课程。

数据结构、计算机网络、计算机组成原理、操作系统原理、数据库原理及应用、软件工程、软件测试等计算机基础理论课程;

网页制作、程序设计Java、JSP程序设计、J2EE程序设计、XML程序设计、Ajax程序设计、SSH框架、Android手机开发、Linux+PHP+MySQL程序设计、SQL Server数据库、Linux操作系统、UML系统分析与设计、软件项目管理、行业标准与规范、IT服务管理、IT职业英语、毕业设计及项目综合实训等专业课程

下载二叉树的创建与访问算法设计word格式文档
下载二叉树的创建与访问算法设计.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    算法设计与分析学习心得

    算法设计与分析学习心得 班级:物联网1201 姓名:刘潇 学号:1030612129 一、实验内容: 这学期的算法与设计课,老师布置了这四个问题,分别是货郎担问题,动态生成二维数组,对话框下拉列......

    《算法的设计与描述》教学设计

    《算法的设计与描述》教学设计 一、 教材内容、学情分析 (1)教材分析 本节内容为教科版算法与程序设计第一章第二节,通过1.1 节的学习, 学生已经了解了计算机解决问题的基本过......

    创建文明城市街头访问问卷

    创建文明城市街头访问问卷 创建文明城市街头访问问卷 同志,您好!我是调查队员,正在开展文明城市建设内容调查,需要占用您一点时间来回答几个问题,希望能得到您配合支持。谢谢!(共32......

    算法教学设计(合集)

    3.4算法及其表示 智能吸尘器算法简单分析 【教材分析】 本节教材的地位、作用等分析。 本节教材位于高中信息技术必修模块第三章中:“算法及其实现”部分内容,本节课的学习目......

    算法设计与分析试题1

    演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 算法设计与分析试题1 一、单选题(每题2分,共40分) 1、0518号台风“达维”过后,要对各个单位捐款救灾情况进行分组......

    算法分析与设计知识点总结

    第一章 概述 算法的概念:算法是指解决问题的一种方法或过程,是由若干条指令组成的有穷序列。 算法的特征: 可终止性:算法必须在有限时间内终止; 正确性:算法必须正确描述问题的求......

    算法与程序设计

    《算法与程序设计》教学中实施研究性学习探步 作者:赵濮民 摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向......

    《算法设计与分析》考核要求(大全5篇)

    《算法设计与分析》课程考核要求 本课程在教学计划中为考查课。考核形式采用大作业形式,以打印文档形式验收并提交。 一.考核内容 1. 分治法题目 (1)编程实现归并排序算法和快速......