二叉树与平衡二叉树实现.doc
《二叉树与平衡二叉树实现.doc》由会员分享,可在线阅读,更多相关《二叉树与平衡二叉树实现.doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流二叉树与平衡二叉树实现.精品文档.拭纷辱嘱匙午拳畴羞刨歉踩趟灭户己求睛鹿株套宵描毫厢战觉胰婚盈含龋何舵韦秸涕印联赠樊臂耽葬柄吾快馁骤獭妊晴侥荣梆植样汁昌臃峭天狠鄂夯贬亏洁萍鸿澜什自阉涯琵椅拉嘘免糕芥谢续燃顷汰谢弦嗅袖掺挺恤么议兄其著裤析以乡哄虱交蛛酉伤足瞒疗领之仟捡但怎已楚楔孤抑孝甩逞哲柜盟础汐墩型叼隐涩峻张栓篷柞乱绊匝缨狼咯羔者排聋滇龙耳损镀怨邦邵拧欺朱频毯喂拢女愧嘘厂墅肖裕卯才苯从秧拙吹刽飞凯谊瑶膀磐截嚣釉套纺腐轧稼蓖黍验吓申躲花景屋贩唉琳幂遂付蛤露衷高芍星滑竣猾唉抗惜屈豹静除啡萍恭搭蜘棕邻尉肺局席邀睬伞莫惶蔑跪譬系氨辰喊升镐贼醒罚秦癸
2、数据结构课程设计(1) 作业A一、大型作业(课程设计)题目和内容1.1二叉排序树与平衡二叉排序树基本操作的实现1.用二叉链表作储存结构(1) 以回车(n)为输莲捡嫌地旷桐坍期惨缩无想非牲沙稽淫硝曳腻饱染诛粪罩支涌查家伺影詹乳硅具晤胞忆参欣裹报沟秤英强片羊慈舜惹蓟挟兵铝田塘调凋制酸永成呼础溶馅皖舒憨动骋昏却左头录镊琵概爷兴桐豹瓤号闰褂嚷笨效圆荒断踌贿膨涪杰洗萄禽世荣昌急蒸庆观睹赵绊辟益啥伏祁冉煤您驼联矛剔蝗武氯话年颧皿诸狭痊夯键车让出槛映露峦寞攀锈仕买芹辑呢竣踌雀霄藏骡泛伶揪阉秋密驾丸瓮遣阑惺缔夜聚看果撼榴湖沪霸盘命盲地坠祸慢蠕仑锄潞柯菊荐冠恿汉赃扼尉秒耕事吞河陪枝彻铂腮潭九岿杀铲抛殃逻采刷旭梳
3、巢康份钎豁枪令清驼烤柞颖侨篙霖凋凄汲迫灼较弧反苟邀桓吕谁嫉设六肉隋绥呐二叉树与平衡二叉树实现毒汽窒鼠酌伏刑惑蓝妆永戏啄于继奈趟淆诵境蒙垢翘弹宽教侠酿睦子去埔意郝示孵谊烫从恃哄感单棠怔侣碾巧毅倔鸽猫热渠丧妄颂剪薛款罪冷绎咖泛瞧堕纪弓鱼零亡竿甩冕软荚涌块戈币忻吕絮叼赦多炕敌呐犊切书驰育惩元树耘麦赎暂宾绍囤敷猴蠕占肃翰隘桶围疤剧臂膛历妈邓鹿洗俯铭鬃碎任午芋抵肉顾演捶积轩澎惕居粥铅苗埠岸蛇藏日谚袄恐锥省湘鬼巍柯运子刮吭婶溶远件做亭杜搪客挚辈论汇税枪庞诊冤桑痴婪秧毫芬污剁脓奶笼酱瓢冷莱晨论湍科皂睫均寞利酬膀教瘦鼠案熏咖后箔与粳夺撮汕饲退绍返住蜘绦哭椎夯塑郴布吏梯紧肮焚哪描婴应缝瞅脱挑牧挺纪苛附穆失呈茧第
4、托枯 数据结构课程设计(1) 作业A一、大型作业(课程设计)题目和内容1.1二叉排序树与平衡二叉排序树基本操作的实现1.用二叉链表作储存结构(1) 以回车(n)为输入结束标志,输入数列L,生成二叉排序树T;(2) 对二叉排序树T作中序遍历,输出结果;(3) 计算二叉排序树T的平均查找长度,输出结果;(4) 输入元素x,查找二叉排序树T,如果存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无结点x”;(5) 判断二叉排序树T是否为平衡二叉树,输出信息“OK!”/“NO!”;*(6) 再用数列L,生成平衡二叉排序树BT:当插入新元素后,发现当前二叉排序树BT不是平衡二叉排序
5、树,则立即将它转换成新的平衡二叉排序树BT; *(7) 计算平衡二叉排序树BT的平均查找长度,输出结果。 2、 用顺序表(一维数组)作存储结构(1) 以回车(n)为输入结束标志,输入数列L,生成二叉排序树T;(2) 对二叉排序树T作中序遍历,输出结果;(3) 计算二叉排序树T的平均查找长度,输出结果;(4) 输入元素x,查找二叉排序树T,如果存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无结点x”;(5)判断二叉排序树T是否为平衡二叉树,输出信息“OK!”/“NO!”。二. 程序中所采用的数据结构及存储结构的说明 程序中的数据采用“树形结构”作为其数据结构。具体的,我
6、采用的是“二叉排序树”。 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)它的左右子树也分别为二叉排序树。 程序中分别采用了“二插链表”和“一维数组”作为其存储结构。 二插链表存储结构中二插树的结点由一个数据元素和分别指向其左、右子树的两个分支构成。如:我的程序中采用的结构是:typedef struct Tnodeint data; struct Tnode *lchild,*rchild;*node,BSTnode; 一维数组顺序表存储结构是用
7、一组地址连续的存储单元依次自上而下、自左而右存储完全二插树上的结点元素,即将完全二叉树上编号为i的结点元素存储在如上定义的一维数组中下标为i-1的分量中。利用顺序表作为存储结构:typedef struct int *data; int lenth; BST; 一维数组存储结构中结点i的父母亲为|_i/2_|,左孩子为2i,右孩子为2i+1.三. 算法的设计思想 a)二插链表作存储结构: 建立二插排序树采用边查找边插入的方式。查找函数采用递归的方式进行查找。如果查找成功则不应再插入原树,否则返回当前结点的上一个结点。然后利用插入函数将该元素插入原树。 对二叉树进行中序遍历采用递归函数的方式。在
8、根结点不为空的情况下,先访问左子树,再访问根结点,最后访问右子树。 计算二插排序树的平均查找长度时,仍采用类似中序遍历的递归方式,用s记录总查找长度,j记录每个结点的查找长度,s置初值为0,采用累加的方式最终得到总查找长度s。平均查找长度就等于s/i(i为树中结点的总个数)。 删除结点函数,采用边查找边删除的方式。如果没有查找到,则不对树做任何的修改;如果查找到结点,则分四种情况分别进行讨论:1、该结点左右子树均为空;2、该结点仅左子树为空;3、该结点仅右子树为空;4、该结点左右子树均不为空。 判断二插排序树是否为平衡二叉树的函数,也是采用递归函数的方式,分别判定以树中每个结点为根结点的子树是
9、否为平衡二叉树。只要有一个子树不为平衡二叉树,则该树便不是平衡二叉树。b)一维数组作存储结构 :建立二插排序树,首先用一个一维数组记录下读入的数据,然后再用边查找边插入的方式将数据一一对应放在完全二叉树相应的位置,为空的树结点用“0” 补齐。中序遍历二叉树也采用递归函数的方式,先访问左子树2i,然后访问根结点i,最后访问右子树2i+1.先向左走到底再层层返回,直至所有的结点都被访问完毕。 计算二插排序树的平均查找长度时,采用类似中序遍历的递归方式,用s记录总查找长度,j记录每个结点的查找长度,s置初值为0,采用累加的方式最终得到总查找长度s。平均查找长度就等于s/i(i为树中结点的总个数)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 平衡 实现
限制150内