资源描述:
《动态平衡二叉树,报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划动态平衡二叉树,报告 数据结构实验报告 题目:平衡二叉树 学院专业年级班别 学号 学生姓名指导教师 XX年7月1日 1.题目:采用字符类型为整型类型和链式存储结构,实现抽象数据类型BTree。ADTBTree{ 数据对象:D={ai
2、ai∈ElemSet,i=1,2,...,n,n≥0} 数据关系:R1={
3、ai-1,ai∈D,i=2,...,n} 基本操作: Adj_bala
4、nce(T) 操作结果:创建平衡二叉树。 InsertAVL(T,search,taller) 初始条件:二叉树T已存在。 操作结果:增加新结点。 SetAVL(T,search,taller) 初始条件:二叉树T已存在。 操作结果:在平衡二叉树上增加新结点并调平衡。 DeleteAVL(T,search,shorter)目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的
5、正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 初始条件:二叉树T已存在。 操作结果:删除结点。 }ADTBTree 2.存储结构定义 公用头文件: #include #include 树的内部变量 typedefstructBTNode { intdata; intbf;//平衡因子 structBTNode*lchild,*rchild;//左、右孩子 }BTNode,*BTree; /*需要的函数声明*/ voidRight_Balance(BTree&
6、p); voidLeft_Balance(BTree&p); voidLeft_Root_Balance(BTree&T); voidRight_Root_Balance(BTree&T); boolInsertAVL(BTree&T,inti,bool&taller); voidPrintBT(BTreeT); voidLeft_Root_Balance_det(BTree&p,int&shorter);目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业
7、水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 voidRight_Root_Balance_det(BTree&p,int&shorter); voidDelete(BTreeq,BTree&r,int&shorter); intDeleteAVL(BTree&p,intx,int&shorter); voidAdj_balance(BTree&T); boolSetAVL(BTree&T,inti
8、,bool&taller); boolInsert_Balance_AVL(BTree&T,inti,bool&taller); intmenu(); 3.算法设计 /*对以*p为根的二叉排序树作右旋处理*/ voidRight_Balance(BTree&p) { BTreelc; lc=p->lchild;//lc指向的*p左子树根结点 p->lchild=lc->rchild;//rc的右子树挂接为*p的左子树 lc->rchild=p; p=lc;//p指向新的结点 } /*
9、对以*p为根的二叉排序树作左旋处理*/ voidLeft_Balance(BTree&p) {目的-通过该培训员工可对保安行业有初步了解,并感受到安保行业的发展的巨大潜力,可提升其的专业水平,并确保其在这个行业的安全感。为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划 BTreerc; rc=p->rchild;//指向的*p右子树根结点 p->rchild=rc->lchild;//rc左子树挂接到*p的右子树 rc->lchild
10、=p; p=rc;//p指向新的结点 } /*对以指针T所指结点为根的二叉树作左平衡旋转处理*/ voidLeft_Root_Balance(BTree&T) { BTreelc,rd; lc=T->lchild;//指向*T的左子树根结点 switch(lc->bf)//检查*T的左子树的平衡度,并作相应平衡处理{ case1://新结点插入在*T的左孩子的左子树上,要作单右旋处