实验二二叉排序树de非递归查找算法设计.docxVIP

实验二二叉排序树de非递归查找算法设计.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二二叉排序树de非递归查找算法设计

实验报告 课程名称 数据结构 实验 成绩 实验名称 二叉排序树的非递归查找算法设计 学号 B 姓名 班级 B 日期 12.5.8 实验目的: 熟悉掌握二叉排序树的概念与特点,掌握与应用二叉排序树的查找、插入算法,训练和提高结构化程序设计能力及程序调试能力。 实验条件: 计算机一台,visual C++6.0 实验内容与步骤: 问题描述 设计二叉排序树的非递归查找算法,并利用此算法实现二叉树的插入、生成及查找。 数据结构类型定义 typedef struct node { KeyType key ; struct node *lchild,*rchild; }BSTNode, *BSTree; 模块划分 (1).插入二叉排序树: int InsertBST(BSTree *bst, KeyType k) (2).创建二叉排序树:void CreateBST(BSTree *bst) (3).中序遍历二叉排序树:void InOrder(BSTree root) (4).查找:BSTree SearchBST(BSTree bst, KeyType key) (5).主函数:void main() 详细设计 #include stdio.h #include stdlib.h #define ENDKEY -1 typedef int KeyType; typedef struct node { KeyType key ; struct node *lchild,*rchild; }BSTNode, *BSTree; int InsertBST(BSTree *bst, KeyType k) { BSTree r,s,pre; r=(BSTree)malloc(sizeof(BSTNode)); r-key=k; r-lchild=NULL; r-rchild=NULL; if (*bst == NULL) { *bst=r; return 1; } pre=NULL; s=*bst; while(s) { if(k==s-key) return 0; else if(ks-key) { pre=s; s=s-lchild; } else { pre=s; s=s-rchild; } } if(kpre-key) pre-lchild=r; else pre-rchild=r; return 1; } void CreateBST(BSTree *bst) { KeyType key; *bst=NULL; scanf(%d, key); while (key!=ENDKEY) { InsertBST(bst, key); scanf(%d, key); } getchar(); } void InOrder(BSTree root) { if (root!=NULL) { InOrder(root-lchild); printf(%d ,root-key); InOrder(root-rchild); } } BSTree SearchBST(BSTree bst, KeyType key) { if (!bst) return NULL; else if (bst-key == key) return bst; else if (bst-key key) return SearchBST(bst-lchild, key); else return SearchBST(bst-rchild, key); } void main() { BSTree T; int tag=1; int m,n; printf(建立二叉排序树,请输入序列,以-1结束:\n); CreateBST(T); printf(中序遍历二叉排序树,输出序列为:\n); InOrder(T); printf(\n); while(tag!=0) { printf(请输入你要查找的元素:\n); scanf(%d,n); if(SearchBST(T,n)==NULL) printf(查找失败!#o#\n); else printf(查找成功!^o^由返回地址索引到%d\n,SearchBST(T,n)-key); printf(是否继续查找按1《是》按0

文档评论(0)

2017meng + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档