- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(Java)-第8章查找讲述
50 30 80 20 90 85 40 35 88 32 例如: 二叉排序树 给定值 == 35 , 50 30 40 35 90 , 50 80 90 95 , 三、基于树的查找 class BinaryTreeNode { int data; //结点中的数据元素,以整型为例 BinaryTreeNode left; //指向左孩子的对象 BinaryTreeNode right; //指向右孩子的对象 } 二叉排序树的查找算法 采用二叉链表存储结构 三、基于树的查找 public class BinarySearch { public BinaryTreeNode binary_search(BinaryTreeNode root,int kx){ BinaryTreeNode p,f; p=root; f=p; while(p!=null){ if(kx==p.data) return p; //查找结束 else if(kxp.data){//在左子树中继续查找 f=p; p=p.left; }else{//在右子树中继续查找 f=p; p=p.right; } } return null; //查找失败 } } 三、基于树的查找 三、基于树的查找 3.二叉排序树的插入 插入过程:设待插入结点的关键字为kx,为将其插入,先要在二叉排序树中进行查找,若查找成功,按二叉排序树定义,待插入结点已存在,不用插入;查找失败时,才进行插入操作。 中序遍历二叉排序树可得到一个关键字的有序序列 10 10 18 10 18 3 10 18 3 8 10 18 3 8 12 10 18 3 8 12 2 10 18 3 8 12 2 7 【例】记录的关键字序列为: 10, 18, 3, 8, 12, 2, 7 ,则构造一棵二叉排序树的过程为: 三、基于树的查找 首先在BinaryTreeNode类中增加构造函数: public BinaryTreeNode(int data,BinaryTreeNode left,BinaryTreeNode right){ this.data=data; this.left=left; this.right=right; } 然后创建新类BinaryInsert,并定义BinaryInsert方法,算法如下: /* *程序功能:在根结点为root的二叉排序树中插入关键字值等于kx的结点,插入成功返回*true,失败返回false。 */ public class BinaryInsert { public boolean binary_insert(BinaryTreeNode root,int kx){ 二叉排序树的插入算法 三、基于树的查找 if(root==null){//建立根结点 root=new BinaryTreeNode(kx,null,null); return true; } return insert(root,kx);//插入kx到以root为根的二叉排序树中 } //将kx插入到以p为根的子树中,递归算法 private boolean insert(BinaryTreeNode p,int kx){ if(kx==p.data) return false;//不插入关键字重复的结点 else if(kxp.data) if(p.left==null){//建立叶子结点作为p的左孩子 p.left=new BinaryTreeNode(kx,null,null); return true; } else //将value插入到p的左子树中 return insert(p.left,kx); 三、基于树的查找 else if(p.right==null){//建立叶子结点作为p的右孩子 p.right=new BinaryTreeNode(kx,null,null); return true; } else //将value插入到p的右子树中 return insert(p.right,kx); } } 三、基于树的查找 三、基于树的查找 4.二叉排序树的删除 删除过程:设待删结点为p(设p为指向待删除结点的对象),其双亲结点为parent,删除过程分以下三种情况进行讨论: 。 (1)被删除的结点是叶子; (2)被删除的结点只有左子树,或者只有右子树; (3)被删除的结点既有
您可能关注的文档
- 数据库用户和安全性管理讲述.ppt
- CA6140车床输出轴解读.doc
- 大数据经典学习路线精要.docx
- 数据库第8章讲述.ppt
- 数据库第7章讲述.ppt
- C4--数据库系统--OK解读.ppt
- 数据库第9章讲述.ppt
- 数据库技术讲述.ppt
- 数据库原理-精品课件讲述.ppt
- 数据库架构师做什么-58同城数据库架构设计思路讲述.pptx
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
最近下载
- 百日咳试题附有答案.docx VIP
- 2024年广东省深圳市光明区人大常委会办公室招聘一般类岗位专干12人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 高中语文任务驱动型材料作文:枯燥与热闹审题指导(含解析).docx VIP
- 某镇卫生院污水设计方案.pdf VIP
- 2024年广东深圳市光明区人大常委会办公室招聘一般类岗位专干3人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
- 中考数学经验交流会发言稿.pdf
- 2024年7月广东省深圳市光明区人大常委会办公室招聘10人历年【高频考点汇总500题】模拟卷及参考答案详解.docx VIP
- 《溜冰圆舞曲和雷鸣电闪波尔卡》精品课件2023.pptx
- 水利项目安全评价报告.docx
- 2024年7月广东省深圳市光明区人大常委会办公室招聘10人历年【综合基础知识500题】高频考点模拟试题及参考答案解析.docx VIP
文档评论(0)