课程设计课程名称数据结构课程设计题目名称二叉排序树的实现学院应用数学学院专业班级学号学生姓名指导教师2013年12月26日1
设计任务1)实现二叉排序树,包括生成、插入,删除;2)对二叉排序树进行先根、中根、和后根非递归遍历;3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来
4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明为什么二叉排序树效率高(或者低)
函数模块:2
主函数main模块功能1
通过bstreeCreatTree()操作建立二叉排序树
在二叉排序树t中通过操作bstreeInsertBST(bstreet,intkey,nametypename,doublegrade)插入一个节点
从二叉排序树t中通过操作voidDelete(bstree&p)删除任意节点
在二叉排序树t中通过操作bstnode*SearchBST(bstreet,keytypekey)查找节点
在二叉排序树t中通过操作p=SearchBST(t,key)查询,并修改节点信息6
非递归遍历二叉排序树
定义函数voidcompare()对数组和二叉排序树的查找效率进行比较比较
2创建二叉排序树CreatTree模块从键盘中输入关键字及记录,并同时调用插入函数并不断进行插入
最后,返回根节点T
3删除模块:二叉排序树上删除一个阶段相当于删去有序系列中的一个记录,只要在删除某个节点之后依旧保持二叉排序树的性质即可
假设二叉排序树上删除节点为*p(指向节点的指针为p),其双亲节点为*f(节点指针为f)
若*p节点为叶子节点,则即左右均为空树,由于删去叶子节点不破坏整棵树的结构,则只需修改其双亲节点的指针即可;若*p节点只有左子树或只有右子树,此时只要令左子树或右子树直接