平衡二叉树原理及其项目应用

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

(3)数据访问接口层
数据访问接口层,主要实现的是业务管理层和数据存取层 的衔接。主要功能是可以为多个业务管理层提供统一的数据 类型封装。在本项目中,体现为
(4)数据存取层
数据存取层,主要功能就是完成对各种数据的存取操作。 他没有必要去关心业务的数据类型。只是为各种不同的数据 提供统一的数据存取机制。特定的数据存取层,提供指定的 文件操作方式。 在本考勤模块中,数据存取层体现为AVLENTERTAINMENMTDATAACCESS.H
10
4 2 8
18
特点:中序遍历 序列为非递减序 列
12
3.平衡二叉树的定义
二叉树中某结点左子树的高度与右子树的高度之差称为该结 点的平衡因子。平衡因子绝对值不大于1的二叉排序树,称 为平衡二叉树。
4.平衡二叉树的结点插入调整方法 (1)平衡二叉树插入调整总体思路
如果新插入的结点改变了原来的平衡性,则首先自插入点, 逆向往原根结点,将第一个失衡结点作为新的根结点,然后 选择LL,RR,LR,RL四种调整方法去调整。
VIRTUALSERIAL CONTROL
Driver
UartRxMsgFromUser
SendTcpStringToSerialPort
总结
本讲座重点讲述了平衡二叉树的原理及其应用, 以及软件的分层设计思想。通过本讲座使同学们 对平衡二叉树的原理有更加深入的掌握,并且在 以后的软件项目开发中,掌握并且使用软件的分 层设计架构。软件的分层设计思想在大型的软件 项目开发中,具有不可忽视的作用。
(2)LL型调整方案
p A 1 2
0 1
调整方法: B单向右旋,上提为根结 点,A要顺时针旋转,成 为B的右子树,D成为A的 左子树。
h C
p B
B
A
E
D C h D h
E
核心语句:
lc=p->lchild; /*lc指向B
p->lchild=lc->rchild; /*把B结点的右子树挂接为A的 左子树 lc->rchild=p; /*A结点成为B的右孩子 p=lc; /*p指向新的根结点
(1)应用层
应用层,就是经常所讲的界面层,是人机交互层。主要 处理的是界面以及界面输入输出的问题。
(2)业务管理层
针对不同的业务应用,设计不同的业务管理层。业务管 理层为应用层提供本业务的操作接口。这样应用层只需要和 业务管理层打交道,而不必涉及数据访问接口和数据存取层。 大大的提高了程序的层次性,增加了程序的可维护性。本项 目中,对于考勤模块体现为
例:按下列关键字的次序生成一棵AVL树。
{13,24,37,90,53,28,98}
插入点 13 插入后结果 13 13 24 24 13 37 A 24 B RR型 失衡原因 调整
24
B
37
13 A 37
90
13
24 37 90
24
24 A 90 B
53
13
-2 37
RL型
13 A 37
53
C 90 B
ENTERTAINME NMTINSPECTI ON
TPMMI CBB
ENTERTAINM ENMTNETWO RK ENTERTAINMENMTACCE SS
ENTERTAINMENMTDATAACCE SS
HANDWRITEDRIV ER TPMMI Device Drivers
CARDFORENTER TAINMENMT
图示1
图示2 图示3 图示4
(2)考勤平衡二叉树的删除
①左子树方向删除
②右子树方向删除
3.软件分层设计思想
在整个软件项目开发过程中,特别对于大型的软件开发 而言,如果软件的设计没有实现分层架构。那么整个软件的 开发效率会很低,更重要的是维护成本会非常的高,以及模 块的移植和重用将很困难。软件的分层就是要提高软件的开 发效率,突出软件开发中每个层次的功能,提高模块的可移 植性以及大大的降低二次开发的成本。 软件的开发一般分为四层:应用层、业务管理层、数据 访问接口层、数据存取层。
2.二叉排序树的概念
二叉排序树(Binary Sort Tree)或者是一棵空树;或者是具 有下列性质的二叉树:(1)若它的左子树不空,则左子树上 所有结点的值均小于等于它的根结点的值;(2)若它的右子 树不空,则右子树上所有结点的值均大于等于它的根结点的 值;(3)它的左、右子树也分别为二叉排序树。
本文档中,特别明显的使用到文件的保存,删除等功能的函数。
C200模块
APPLICATION
娱乐场所管理
ENTERTAINME NMTCHECKATT ENDANCE
ENTERTAINME NMTBUSINESS DIARY
ENTERTAINME NMTLISTAHAN D
ENTERTAINME NMTBULLETIN
2.平衡二叉树在考勤存取模块中的使用
针对项目中,考勤存取业务数据量大,即内存总存储50000 条考勤记录的特点,采用平衡二叉树可以大大的提高数据检 索的速度。
(1)考勤数据结构的定义
(2)考勤平衡二叉树的插入
①左子树方向插入
图示1
图示2 图示3
图示4
②单向左旋处理
③单向右旋处理
Байду номын сангаас右子树方向插入
53 C
-2
24 A 53 37 C B 90
RL型
A 24 13
37 C 53 B 28 90
28
13
28
37
98
13
24 28
-2 53 A 90 B
RR型
24
37 90
13
98
28
53
98
2.平衡二叉树的项目应用
1.项目概述
本项目名称为CDMA金盾娱乐信息管理系统。整个项目具备 短信功能、通话功能、呼叫记录、通信录、公话计费、存储功 能、娱乐场所管理、测试功能、终端设置、安全管理、远程升 级以及系统信息。其中娱乐场所管理,作为一个新增的模块独 立处理,他主要包括考勤存取、查询及上报、营业信息存取、 查询及上报、联合检查、日常检查、人员名簿查询业务功能。 金盾软件项目设计
(5)RL型调整方案
p A -1 -2 b 0 1
F 0 -1
h+1 B
C c
G
h+1
调整方法: C 先右旋后左旋, 确定C为新的根 结点,将B顺时 针旋转作为C的 右子树,然后A 作为C的左子树。
C
A
B
F
E
D
G
E
h
D
p->rchild=c->lchild; /*把C的左子树挂接成A的右子树 */ b->lchild=c->rchild; /*把C的右子树挂接成B的左子树 */
平衡二叉树及软件分层设计思想
主讲人:某某某
平衡二叉树及软件分层设计思想
1.平衡二叉树原理 2.平衡二叉树的项目应用 3.软件分层设计思想
1.平衡二叉树原理
1.二叉树的概念
一棵二叉树是n个结点的有限集合,其中每个结点最多有两 个孩子。该集合或者为空,或者是由一个根结点加上两棵分 别称为左子树和右子树的、互不相交的二叉树组成。二叉树 有五种基本的形态。
(3)RR型调整方案
p A -1 -2 p
B
0 -1
a
h
调整方法: B单向左旋,代替A成为根结 点,将A结点向右下旋转成 为B的左子树的根结点,而 B的原左子树则作为A结点 的右子树。
a
B
A
c
b
b
h
c
核心语句: lc=p->rchild; /*lc指向B*/ p->rchild=lc->lchild; /*把B结点的左子树挂接为A的 右子树*/ lc->lchild=p; /*A结点成为B的左孩子*/ p=lc; /*p指向新的根结点*/
谢 谢 大 家 预祝各位新春快乐
(4)LR型调整方案
p
2 1 b 0 -1 B 0 1 c D h F A
E C
h+1
h+1 G
调整方法:C先 左旋后右旋,确 定C为新的根结 点,将B顺时针 旋转作为C的左 子树,然后A作 为C的右子树。
G
C
B
A
D
F
E
p->lchild=c->rchild; /*把C的右子树挂接成A的左子树*/ b->rchild=c->lchild; /*把C的左子树挂接成B的右子树*/ c-lchild=b; /*把B挂接成C的左子树*/ c->rchild=p; /*把A挂接成C的右子树*/
相关文档
最新文档