- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第026课 算法及数据结构 概述: 树的查询 结点的删除 树的遍历 重点: 难点: 结点的删除 树的遍历 树的查询 结点的删除 第026课 算法及数据结构 6.4 二叉树的查询 10 2 13 1 5 16 如图,该树便是一棵搜索二叉树. 下面我们要讨论如何查询到5所在的结点. 首先我们要访问根结点,判断根结点是否是要查询的目标. 510 ,所以根结点不是查询目标且目标可能在.其左子树内 6 二叉树 第026课 算法及数据结构 10 2 13 1 5 16 然后,对根的左子树进行检查.判断该子树根结点是否是要查询的目标. 25,则5可能在该子树的右子树中. 6.4 二叉树的查询 6 二叉树 第026课 算法及数据结构 10 2 13 1 5 16 判断,该子树的根结点是否是要查找目标. 查找成功,返回该结点. 若查找到最后为空结点,其后再没有子树则判定树中无该结点,给出失败提示.. 6.4 二叉树的查询 6 二叉树 第026课 算法及数据结构 private Node getNode(int key) throws Exception{ Node result = root; while(result.key != key){ if(key result.key){ result = result.left; }else{ result = result.right; } if(result == null){ throw new Exception(Cant find value by +key); } } return result; } 这是插入结点代码的实现 其中 subtreeRoot是要查询子树的根 newNode是要插入的结点 目标结点在当前结点的左子树 目标结点在当前结点的右子树 查询到最终子树没有目标结点 查到目标结点 6.4 二叉树的查询 6 二叉树 第026课 算法及数据结构 6.5 二叉树的删除 树的结点删除的操作相对繁琐一些. 10 2 13 1 5 16 如图,设我们将删除2这个结点. 由于要删除的结点下有两棵子树而父结点只能接收一棵子树,所以有必要对其子树的结构做一些调整. 6 二叉树 第026课 算法及数据结构 10 2 13 1 5 16 查询的第一步首先要掌握目标结点(被删除结点)及其父结点. 其过程与查询类似,但要注意保留其父结点的引用. 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 5 16 获得目标结点及其父结点后要判断目标结点是其父结点的左子树还是右子树. 现2是10的左子树. 然后按照如下步骤进行. 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 5 16 将目标结点的左子树添加到其父结点的左子树中. 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 5 16 将目标结点的右子树加入到其自己的左子树中 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 13 1 5 16 删除目标结点 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 13 1 5 16 整理后为 这是当目标结点为其父结点的左子树时的操作. 下面介绍,当目标结点为其父结点的右子树时的操作 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 12 16 如图,设我们将删除13这个结点. 查询等操作相同.以获得目标结点及其父结点 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 12 16 现已知目标结点与其父结点且目标结点为其父结点的右子树 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 12 16 首先将目标结点的右子树添加到其父结点的右子树中. 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 13 1 12 16 然后 将目标结点的左子树添加到其自身的左子树中. 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 1 12 16 最后 删除目标结点 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 10 2 1 12 16 整理后为 6.5 二叉树的删除 6 二叉树 第026课 算法及数据结构 public void delete(int key) throws Exception{ Node current = root; Node parent = nu
文档评论(0)