平衡二叉树-数据结构课程设计论文【可运行测试】

合集下载

北邮数据结构平衡二叉树报告概论

北邮数据结构平衡二叉树报告概论

数据结构实验报告实验名称:平衡二叉树1.实验目的和内容根据平衡二叉树的抽象数据类型的定义,使用二叉链表实现一个平衡二叉树。

二叉树的基本功能:1、平衡二叉树的建立2、平衡二叉树的查找3、平衡二叉树的插入4、平衡二叉树的删除5、平衡二叉树的销毁6、其他:自定义操作编写测试main()函数测试平衡二叉树的正确性。

2. 程序分析2.1 存储结构struct node{int key; //值int height; //这个结点的父节点在这枝最长路径上的结点个数node *left; //左孩子指针node *right; //右孩子指针node(int k){ key = k; left = right = 0; height = 1; } //构造函数};2.2 程序流程2.3 关键算法分析(由于函数过多,在此只挑选部分重要函数)算法1:void AVL_Tree::left_rotate(node *&x)[1] 算法功能:对 R-R型进行调整[2] 算法基本思想:将结点右孩子进行逆时针旋转[3] 算法空间、时间复杂度分析:都为0(1)[4] 代码逻辑node *y = x->right; y为x的右孩子x->right = y->left; 将y的左孩子赋给x的右孩子 y->left = x; x变为y的左孩子fixheight(x); 修正x,y的height值fixheight(y);x = y; 使x的父节点指向y 算法2:void A VL_Tree::right_rotate(node *&x)[1] 算法功能:对L-L型进行调整[2] 算法基本思想:将左孩子进行顺时针旋转[3] 算法空间、时间复杂度分析:都为0(1)[4] 代码逻辑node *y = x->left; //y为x的左孩子 x->left = y->right; y的右孩子赋给x的左孩子y->right = x; x变为y的右孩子fixheight(x); 修正x和y的height值fixheight(y);x = y; 使x的父节点指向y算法3:node*& A VL_Tree::balance(node *&p)[1] 算法功能:对给定结点进行平衡操作[2] 算法基本思想:通过平衡因子判断属于哪种情况,再依照情况进行平衡[3] 算法空间、时间复杂度分析:没有递归和循环,都为O(1)[4] 代码逻辑fixheight(p); //修正P的height值if (bfactor(p) == 2) 平衡因子为2,为L-?型if (bfactor(p->left) < 0) P的左孩子平衡因子<0时,为L-R型,执行left_rotate(p->left); 相关平衡操作,若>0,为L-L型。

2015广工数据结构实验报告平衡二叉树

2015广工数据结构实验报告平衡二叉树

数据结构设计性实验报告课程名称_____数据结构实验 _ 题目名称平衡二叉树学生学院__ 计算机学院______ 专业班级_学号____ ______学生姓名____ _ ___指导教师______ ____2015年6月14日目录一、设计任务、要求以及所用环境及工具 (4)实验设计任务 (4)实验要求 (4)编程环境 (4)抽象数据类型及接口简要描述 (5)抽象数据类型 (5)接口简要描述 (7)算法设计 (8)程序测试 (17)测试代码 (17)测试结果 (18)测试分析 (20)思考与小结 (21)一、设计任务、要求以及所用环境及工具实验设计任务以教材中讨论的各种抽象数据类型为对象,利用C语言的数据类型表示和实现其中某个注:如果基本操作数量较多,可选择实现其中一个基本操作子集。

实验要求实验要求如下:1.首先了解设计的任务,然后根据自己的基础和能力从中选择一题。

一般来说,选择题目应以在规定的时间内能完成,并能得到应有的锻炼为原则。

若学生对教材以外的相关题目较感兴趣,希望选作实验的题目时,应征得指导教师的认可,并写出明确的抽象数据类型定义及说明。

2. 实验前要作好充分准备,包括:理解实验要求,掌握辅助工具的使用,了解该抽象数据类型的定义及意义,以及其基本操作的算法并设计合理的存储结构。

3. 实验时严肃认真,要严格按照要求独立进行设计,不能随意更改。

注意观察并记录各种错误现象,纠正错误,使程序满足预定的要求,实验记录应作为实验报告的一部分。

4. 实验后要及时总结,写出实验报告,并附所打印的问题解答、程序清单,所输入的数据及相应的运行结果。

编程环境本次实验设计采用C++语言,在Microsoft Visual Studio2010 IDE下完成。

所创建的项目类型Win32控制台应用程序:抽象数据类型及接口简要描述本次数据结构实验设计我选择的是二叉平衡树(AVL),使用C++面向对象编程语言实现。

利用C++泛型编程技术完成AVL类AVLTree。

急求数据结构-平衡二叉树课程设计

急求数据结构-平衡二叉树课程设计

急求数据结构-平衡二叉树课程设计平衡二叉树课程设计
一、什么是平衡二叉树平衡二叉树(Balanced Binary Tree),又称AVL树,是一种特殊的二叉查找树,它的每个
节点的两个子树的高度最大差别为
1,平衡二叉树的搜索、插入和删除操作只需要O(logn)的时间复杂度,而普通的二叉查找树则需要O(n)的时间复杂度。

二、平衡二叉树的特点
1、平衡二叉树的每个节点的左右子树的高度差不超过1;
2、平衡二叉树的搜索、插入和删除操作只需要O(logn)的时间复杂度;
3、平衡二叉树的高度可以保持在log2n的高度;
4、平衡二叉树可以用来建立字典和查找表,以及其他应用;
5、平衡二叉树可以用来存储已经排序的数据,以提高搜
索效率。

三、平衡二叉树的实现
1、插入操作插入新节点的操作可以分为两步:首先,将新节点插入到树中,其次,进行调整,使树保持平衡。

2、删除操作删除节点的操作可以分为三步:首先,将要删除的节点从树中移除,其次,找到要删除节点的子节点,最后,将子节点插入到树中,以保证树的平衡性。

3、查找操作查找操作是在平衡二叉树中最常见的操作,它可以在O(logn)的时间内找到目标节点。

四、平衡二叉树课程设计
1、首先,学生需要研究二叉树的基本概念,以及普通二叉查找树的实现;
2、其次,学生需要了解平衡二叉树的概念、特点,并掌握它的实现方法;
3、然后,学生需要编写一个程序,来实现平衡二叉树的插入、删除和查找操作;
4、最后,学生需要编写一个测试程序,来验证程序的正确性。

java数据结构与算法之平衡二叉树(AVL树)的设计与实现分析

java数据结构与算法之平衡二叉树(AVL树)的设计与实现分析

java数据结构与算法之平衡二叉树(A VL树)的设计与实现普通二叉查找树的问题在开篇,我们提到过,普通二叉树(二叉查找树)在操作的时间复杂度上不一定遵循O(㏒n),也有可能是O(n),这是为什么呢?在上一篇中,我们明明插入都按照一定规则比较的呀,其实那是因为我们在上篇测试时执行了随机插入的操作,如果此时利用上篇实现的二叉搜索树将一段已排序好的数据一个个插入后,就会发现如下情况了:从图中我们可以发现,把已排序的1-9数据进行正序和倒序插入后,树的结构已变成单向左子树或者右子树了,如果我们在往里插入已排序的数据,那么单向左子树或者右子树越来越长,此时已跟单链表没有什么区别了,因此对此结构的操作时间复杂度自然就由O(㏒n)变成O(n)了,这也就是普通二叉查找树不是严格意义上O(㏒n)的原因。

那么该如何解决这个问题呢?事实上一种解决的办法就是要有一个称为平衡的附加结构条件即:任何结点的深度不得过深,而这种数据结构就是我们本篇要分析的平衡二叉树(AVL),它本身也是一种二叉查找树,只不过不会出现前面我们分析的情形罢了,接下来我们就来分析一下这棵平衡二叉树。

平衡二叉树的定义通过上面的分析,我们明白的普通二叉查找树的不足,也知道了如何去解决这个缺点,即构建树时要求任何结点的深度不得过深(子树高度相差不超过1),而最终这棵树就是平衡二叉树(BalancedBinaryTree),它是G.M.Adelson-Velsky和ndis在1962年在论文中发表的,因此又叫AVL树。

这里我们还需要明确一个概念,AVL树只是实现平衡二叉树的一种方法,它还有很多的其他实现方法如红黑树、替罪羊树、Treap、伸展树等,后面我们还会分析其他树的实现。

ok~,接着来了解一下AVL树的特性:一棵AVL树是其每个结点的左子树和右子树的高度最多相差1的二叉查找树(空树的高度为-1),这个差值也称为平衡因子(其取值可以是1,0,-1,平衡因子是某个结点左右子树层数的差值,有的书上定义是左边减去右边,有的书上定义是右边减去左边,这样可能会有正负的区别,但是这个并不影响我们对平衡二叉树的讨论)。

二叉树课程设计毕业设计(论文)

二叉树课程设计毕业设计(论文)

目录1 问题描述 (1)2 需求分析 (1)3 概要设计 (1)3.1模块划分……………………………………………………….错误!未定义书签。

4 详细设计.................................................................................... (6)4.1主要模块流程图 (7)4.2 数据类型的定义 (8)4.3 主要模块的算法描述 (8)5 测试分析 (14)6 课程设计总结 (17)参考文献 (18)附录(源程序清单) (19)1 问题描述建立一棵二叉树;再以广义表表示法输出这棵二叉树;然后对该树进行先序、中序、后序遍历及层次遍历。

要求:(1)采用二叉链表存储二叉树;(2)先序、中序、后序遍历设计非递归算法。

2 需求分析二叉树一种数据结构,用于保存和处理树状的数据,比如家谱。

他的应用极为广泛,因为根据数据结构的理论,任何复杂的树够可以转换为二叉中并进行处理,二叉树在排序、查找、大规模数据索引方面有很多很多应用。

而且二叉树排序是简单算法排序中速度最快的。

在二叉树的一些应用中,常常要求在树中查找具有某种特征的节点,或者对树中全部节点逐一进行某种处理。

这就提出了遍历二叉树。

根据遍历的方向的选择,就有了前序遍历,中序遍历和后序遍历以及层次遍历二叉树。

因此掌握二叉树的各种遍历二叉树算法非常重要,而且高效的遍历算法能够节省很多成本。

3 概要设计3.1模块划分本程序包括七个模块:(1)主程序模块void main(){初始化;以广义表表示法输出;建立二叉树;非递归先序遍历二叉树并输出;非递归中序遍历二叉树并输出;非递归后序遍历二叉树并输出;层次遍历二叉树并输出;}(2)以广义表表示法输出——实现对二叉树的输出(3)二叉树建立模块——建立一个二叉树并对二叉树进行初始化(4)非递归先序遍历模块——实现对二叉树的递归先序遍历并输出(5)非递归中序遍历模块——实现对二叉树的递归中序遍历并输出(6)非递归后序遍历模块——实现对二叉树的递归后序遍历并输出(7)层次遍历模块——实现对二叉树的层次遍历并输出4 详细设计4.1主要模块流程图主流程图建立一棵二叉树以广义表表示法输出一棵二叉树非递归先序遍历非递归中序遍历非递归后序遍历层次遍历4.2数据类型的定义(1)二叉树的二叉链表存储类型typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;} BiTNode,*BiTree;(2)栈类型的定义typedef struct SqStack/*定义一个顺序栈*/{BiTNode *base;BiTNode *top;int stacksize;}SqStack;void InitStack(SqStack *S)/*栈的初始化*/{S->base=(BiTNode*)malloc(STACK_INIT_SIZE*sizeof(BiTNode));S->top=S->base;S->stacksize=STACK_INIT_SIZE;}void Push(SqStack *S,BiTNode e)/*入栈算法*/{if(S->top-S->base>=S->stacksize){S->base=(BiTNode*)realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(BiTNode));S->top=S->base+S->stacksize;S->stacksize+=STACKINCREMENT;}*(S->top)=e;S->top++;}BiTNode Pop(SqStack *S)/*出栈算法*/{S->top --;return *S->top;}int StackEmpty(SqStack *S)/*判栈空*/{if(S->top == S->base )return 1;elsereturn 0;}4.3主要模块的算法描述(1)主函数void main(){BiTree Ta;int a=1;printf("请创建树\n");Ta=CreateBiTree();printf("广义表表示法输出二叉树\n");printfBTree(Ta);printf("\n");printf(" 请选择:\n");printf(" (1)先序遍历\n");printf(" (2)中序遍历\n");printf(" (3)后序遍历\n");printf(" (4)层次遍历\n");printf(" (0)结束程序\n");while(a){scanf("%d",&a);if(a==1){(2)建立二叉树BiTree CreateBiTree()/*以二叉链表的存储方式建立一棵二叉树*/ {char p;BiTree T;scanf("%c",&p);if(p=='#')T=NULL;else{T=(BiTNode *)malloc(sizeof(BiTNode));T->data=p;T->lchild=CreateBiTree();T->rchild=CreateBiTree();}return (T);}(3)用广义表表示法输出二叉树void printfbitree(t)/*用广义表表示法输出二叉树*/{if(t!=NULL){printf("%c",t->data);if(t->lchild!=NULL||t->rchild!=NULL){printf("(");printfbitree(t->lchild);if(t->rchild!=NULL)printf(",");printfbirree(t->rchild);printf(")");}}}(4)非递归先序遍历二叉树void PreOrder(BiTree T)/*非递归先序遍历二叉树*/ {SqStack S;BiTree p=T;InitStack(&S);if(p)Push(&S,*p);while(!StackEmpty(&S)){p=(BiTNode *)malloc(sizeof(BiTNode));*p=Pop(&S);printf("%c",p->data);if(p->rchild)Push(&S,*p->rchild);if(p->lchild)Push(&S,*p->lchild);}}(5)非递归中序遍历二叉树void InOrder(BiTree T)/* 非递归中序遍历二叉树*/ {SqStack S;BiTree p=T;InitStack(&S);while(p||!StackEmpty(&S)){if(p){Push(&S,*p);p=p->lchild;}else{p=(BiTNode *)malloc(sizeof(BiTNode));*p=Pop(&S);printf("%c",p->data);p=p->rchild;}}}(6)非递归后序遍历二叉树void PostOrder(BiTree T)/ *非递归后序遍历二叉树*/ SqStack S;BiTNode p, *l, *r;InitStack(&S);Push(&S, *T);while(!StackEmpty(&S)){p = Pop(&S);l = p.lchild;r = p.rchild;if (l == NULL && r == NULL){printf("%c", p.data);}else{p.lchild = NULL;p.rchild = NULL;Push(&S, p);if (r != NULL) Push(&S, *r);if (l != NULL) Push(&S, *l);}}}(7)层次遍历void LevelOrderTraverse(BiTree T) /*层序遍历*/ {BiTree Q[STACK_INIT_SIZE];int front=0,rear=0;BiTree p;if(T){ //根结点入队Q[rear]=T;rear=(rear+1)%STACK_INIT_SIZE;}while(front!=rear){p=Q[front]; //队头元素出队front=(front+1)%STACK_INIT_SIZE;printf("%c",p->data);if(p->lchild){ //左孩子不为空,入队Q[rear]=p->lchild;rear=(rear+1)%STACK_INIT_SIZE;}if(p->rchild){ //右孩子不为空,入队Q[rear]=p->rchild;rear=(rear+1)%STACK_INIT_SIZE;}}}5 测试分析6 课程设计总结通过这次课程设计使我充分的理解了从建立二叉树到输出二叉树再遍历二叉树的基本原理与算法,尤其是深刻的学习了二叉树遍历的非递归实现的算法。

数据结构课程设计:平衡二叉树

数据结构课程设计:平衡二叉树

数据结构课程设计:平衡二叉树目录1 课程设计的目的和内容..............................................1课程设计目的 ................................................ 1 1.11.2 主要内容 (1)2 课程设计分析 (2)2.1 程序的目的和要求 (2)2.2 程序的主要数据和功能模块 (2)3 详细设计 (5)3.1 程序主要功能模块的伪代码算法 (5)3.2 程序主要流程图 (8)4 测试数据与测试结果................................................ 9 5 程序的使用和改进. (14)5.1 用户使用说明 (14)5.2 程序的改进 (14)6 课程设计小结..................................................... 15 7 参考文献 (15)1 平衡二叉树1 课程设计的目的和内容1.1 课程设计目的复习二叉树的三叉链表存储结构和遍历方法。

掌握二叉排序树的特点和生成方法。

掌握平衡二叉树四种不平衡形态的判定和旋转为平衡的方法。

1.2 主要内容(1)输入结点数据,构造二叉树的结点,按二叉排序树的规则插入该结点到三叉链表中;(2)通过插入函数InsertAVL(BSTNode* &T,int key)插入新结点到二叉树中,并递归调用插入函数本身,直到正确插入到二叉树中,并返回上次递归,每返回上次递归一次同时判断其平衡度bf,找到最小不平衡树的根结点p。

(3)判断最小不平衡树的平衡因子(bf)的值,若bf>1, 则调用左平衡函数LeftBalance(),若bf<-1,则调用右平衡函RightBalance(),再判断根结点p的左(右)孩子的平衡因子(共有LL型、LR型、RR型、RL型四种),然后判定得到的不平衡形态调用不同的旋转函数即可将其重新调整为平衡二叉树;(4)重复步骤(1)(2)(3),直到所有结点都插入到该平衡二叉树中为止;(5)输出该二叉树的前序(或者后序)序列和中序序列,手工恢复出该二叉树,检验其是否为平衡二叉树;并验证其中序序列的有序性。

实验报告平衡二叉树

实验报告平衡二叉树

实习报告一、需求分析1、问题描述利用平衡二叉树实现一个动态查找表。

(1)实现动态查找表的三种基本功能:查找、插入和删除。

(2)初始时,平衡二叉树为空树,操作界面给出查找、插入和删除三种操作供选择。

每种操作均要提示输入关键字。

在查找时,如果查找的关键字不存在,则把其插入到平衡二叉树中。

每次插入或删除一个结点后,应更新平衡二叉树的显示。

(3)每次操作的关键字都要从文件中读取,并且关键字的集合限定为短整型数字{1,2,3······},关键字出现的顺序没有限制,允许出现重复的关键字,并对其进行相应的提示。

(4)平衡二叉树的显示采用图形界面画出图形。

2、系统功能打开数据文件,用文件中的关键字来演示平衡二叉树操作的过程。

3、程序中执行的命令包括:(1)(L)oad from data file //在平衡的二叉树中插入关键字;(2)(A)ppend new record //在平衡的二叉树中查找关键字;(3)(U)pate special record //显示调整过的平衡二叉树;(4)(D)elete special record //删除平衡二叉树中的关键字;(5)(Q)uit //结束。

4、测试数据:平衡二叉树为:图 1 插入关键字10之前的平衡二叉树插入关键字:10;调整后:图 2 插入关键字10之后的平衡二叉树删除关键字:14;调整后:图 3 删除关键字14后的平衡二叉树查找关键字:11;输出:The data is here!图 3 查找关键字11后的平衡二叉树二、概要设计本次实验目的是为了实现动态查找表的三种基本功能:查找、插入和删除。

动态查找表可有不同的表示方法,在此次实验中主要是以平衡二叉树的结构来表示实现的,所以需要两个抽象数据类型:动态查找表和二叉树。

1、动态查找表的抽象数据类型定义为:ADT DynamicSearchTable{数据对象D :D是具有相同特性的数据元素的集合。

平衡二叉树-数据结构课程设计论文【可运行测试】

平衡二叉树-数据结构课程设计论文【可运行测试】

数据结构课程设计课程名称:平衡二叉树的生成院系:信息工程学院年级专业:10级计科学号:学生姓名:指导教师:开题时间: 2010 年 12 月 01 日完成时间: 2010 年 12 月 31 日信息工程学院X X X X X X X数据结构课程设计成绩评定表院系:信息工程学院年级专业:学号:姓名:摘要本篇论文系计科专业10年末课程设计论文,按照相应要求写作而成。

主要讨论的是平衡二叉树的生成问题,借助本程序可以由用户输入数值,并生成平衡二叉树,并可以对数据进行方便的修改和删除添加,任意插入或删除一个结点后仍然要求任然构成平衡二叉树,并按中序遍历输出这棵平衡二叉树。

·本论文共由五个章构成,每个内容独立成章,各章下设相应子章节。

各个章节逐渐递进,分别是:第一章:需求分析第二章系统设计第三章编码第四章测试第五章维护本论文特点:1.论述清楚,目录详尽,可以方便的查询相应章节,方便使用。

2.图文结合,几乎没一个子程序模块都有相应的流程图与之对应,有利于读者理解每个子程序的设计思路。

3.模块分化清晰,每个模块独立成节,又彼此联系,深化了C语言模块化编程的特点。

4.测试模块配合对应的运行截图,真实可信,对读者理解程序的运行情况起到了很大作用。

5.程序清单完整详细,解释详细。

目录第一章需求分析 (1)1.1功能描述­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11.2数据词典­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­1第二章系统设计 (3)2.1 基本概念介绍­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­3 2.2 总体设计­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­8 2.3 插入结点­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­10 2.4 删除结点­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11 2.5 中序遍历­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11 第三章编码 (12)3.1 总体编码­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­123.2 总流程图­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­153.3 以指针T所指结点为根的二叉树作右平衡旋转处理­­­­­­­­­­­­16 第四章测试 (17)4.1 创建二叉树测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­174.2 插入结点测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­194.3 删除结点测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­204.4中序遍历结点测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­214.5 先序遍历测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­21 第五章维护 (22)5.1维护­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­22第一章需求分析1.1功能描述平衡二叉树是数据结构中一个非常重要的概念。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计课程名称:平衡二叉树的生成院系:信息工程学院年级专业:10级计科学号:学生姓名:指导教师:开题时间: 2010 年 12 月 01 日完成时间: 2010 年 12 月 31 日信息工程学院X X X X X X X数据结构课程设计成绩评定表院系:信息工程学院年级专业:学号:姓名:摘要本篇论文系计科专业10年末课程设计论文,按照相应要求写作而成。

主要讨论的是平衡二叉树的生成问题,借助本程序可以由用户输入数值,并生成平衡二叉树,并可以对数据进行方便的修改和删除添加,任意插入或删除一个结点后仍然要求任然构成平衡二叉树,并按中序遍历输出这棵平衡二叉树。

·本论文共由五个章构成,每个内容独立成章,各章下设相应子章节。

各个章节逐渐递进,分别是:第一章:需求分析第二章系统设计第三章编码第四章测试第五章维护本论文特点:1.论述清楚,目录详尽,可以方便的查询相应章节,方便使用。

2.图文结合,几乎没一个子程序模块都有相应的流程图与之对应,有利于读者理解每个子程序的设计思路。

3.模块分化清晰,每个模块独立成节,又彼此联系,深化了C语言模块化编程的特点。

4.测试模块配合对应的运行截图,真实可信,对读者理解程序的运行情况起到了很大作用。

5.程序清单完整详细,解释详细。

目录第一章需求分析 (1)1.1功能描述­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11.2数据词典­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­1第二章系统设计 (3)2.1 基本概念介绍­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­3 2.2 总体设计­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­8 2.3 插入结点­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­10 2.4 删除结点­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11 2.5 中序遍历­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11 第三章编码 (12)3.1 总体编码­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­123.2 总流程图­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­153.3 以指针T所指结点为根的二叉树作右平衡旋转处理­­­­­­­­­­­­16 第四章测试 (17)4.1 创建二叉树测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­174.2 插入结点测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­194.3 删除结点测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­204.4中序遍历结点测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­214.5 先序遍历测试­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­21 第五章维护 (22)5.1维护­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­22第一章需求分析1.1功能描述平衡二叉树是数据结构中一个非常重要的概念。

相关文档
最新文档