江苏大学C++二叉排序树的建立、插入、删除和查找(免费下载).doc

江苏大学C++二叉排序树的建立、插入、删除和查找(免费下载).doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
江苏大学C++二叉排序树的建立、插入、删除和查找(免费下载).doc

数据结构课程设计实验报告 设计题目:二叉排序树的建立、插入、删除和查找 学生姓名: 系 别: 专 业: 班 级: 学 号: 指导教师: 一、需求分析 1、运行环境 Microsoft Visual Studio 2008 2、程序所实现的功能 二叉排序树的建立、插入、删除和查找 给出一组关键值,建立相应的二叉排序树,完成: ⑴结点的删除操作。要求可以实现删除根结点、叶子结点以及其它任意结点的功能; ⑵插入一个新结点的操作; ⑶对给定的值在二叉排序树进行查找; ⑷随时显示操作的结果。 3、程序的输入,包含输入的数据格式和说明 程序从外部输入数据,输入一串数字序列并以-1结束 4、程序的输出,及其输出格式 通过用户手动选择操作指令,经由程序内部处理,输 出相应的结果到显示屏 5、测试数据,如果程序输入的数据量比较大,需要给出测试数据 用户手动输入一个数字序列进行数据测试 二、设计说明 1、算法设计的思想 通过算法的需求,确定算法的主要模块(建立并输出二叉树、插入结点、删除结点、查找结点、以及主函数模块)对各模块再进行函数的选取与构造,以及变量的控制等。最后,再将各模块结合,形成完整的算法,注意全局变量的选择。 2、主要的数据结构设计说明 二叉排序树的主要存储结构 Typedef struct TreeNode//声明数的结构 { Int key;//存放关键字 Struct TreeNode*left;//存放左子树的指针 Struct TreeNode*right;//存放右子树的指针 }treeNode; 3、程序的主要流程图 否 是 4、程序的主要模块,要求对流程图中出现的模块说明 *建立二叉树,用插入函数依次插入用户输入的序列,最后再中序遍历并输出显示 *结点的插入,运用递归算法进行结点的插入 *结点的删除,是该算法中较为复杂的一个模块,需判定用户输入的结点是根,还是叶子,这关系到删除的结点在序列中的位置 *结点的查找,在根指针所指二叉排序树中递归查找关键字等于 key 的数据元素; 若成功,返回指向该数据元素结点的指针; 否则返回空指针; 1)主函数模块 Main() { 建立n个关键字的二叉排序树并输出; 从二叉树排序树中删除任意结点 ; 在二叉树排序树中,插入一个结点 ; 在二叉排序树中递归查找关键字 ; } 2)创建二叉排序树模块 treeNode* buildTree(treeNode* head,int number) { 建立n个关键字的二叉排序树; 从键盘输入调建立n个关键字依次用insertTree(int key) ; 返回根结点 ; 输出过程; } 3)删除模块 deleteTree(int key) { 从二叉树排序树 中删除任意结点 ; 可以实现删除根结点、叶子结点以及其它任意结点的功能; 1. 若结点p是叶子,则直接删除结点p; 2. 若结点p只有左子树,则只需重接p的左子树; 若结点p只有右子树,则只需重接p的右子树; 3. 若结点p的左右子树均不空,则 a查找结点p的右子树上的最左下结点(若为s) 以 及该结点 的双亲结点par; b将结点s数据域替换到被删结点p的数据域; c若结点p的右孩子无左子树,则将s的右子树接到par的右子树上;否则,将s的右子树接到结点par的左子树上; d删除结点s; } 4)插入模块 void insertTree(int key) { 在二叉树排序树中,插入一个结点s(递归算法); 被CreatBST函数调用;} 5)查找模块 treeNode* searchTree(int key) { 在根指针所指二叉排序树中递归查找关键字等于 key 的数据元素; 若成功,返回指向该数据元素结点的指针; 否则返回空指针; } 程序的主要函数及其伪代码说明 treeNode* BiSortTree::buildTree(treeNode* head,

文档评论(0)

snj01 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档