当前位置: 首页 > wzjs >正文

做外贸的人经常逛的网站邵阳seo快速排名

做外贸的人经常逛的网站,邵阳seo快速排名,高端网络推广,手机怎么登pc端智慧团建在开始编写删除功能之前,先要编写好searchParent()(寻找父节点)和min()(查找树中最小值)两个函数,后期会在删除功能中使用到。 searchParent()的编写 /*** * param value* return Node*/public Node searchParent(int value){if(rootnull) return null;…

在开始编写删除功能之前,先要编写好searchParent()(寻找父节点)和min()(查找树中最小值)两个函数,后期会在删除功能中使用到。

searchParent()的编写

    /*** * @param value* @return Node*/public Node searchParent(int value){if(root==null) return null;Node index = root;while (index!=null){if ((index.left!=null&&index.left.value==value)||(index.right!=null&&index.right.value==value)){return index;}else if(index.value>value){index = index.left;}else {index = index.right;}}return null;}

用于判断父节点是否为空,以及通过父节点直径指向后面节点来删除指定节点。

min()

    /*** 找树当中的最小值* @param node* @return*/public int min(Node node){Node index = node;while (index.left!=null){index = index.left;}return index.value;}

查找树中的最小值,用于在删除指定元素后重构二叉树时,来代替原来的值。

有了前面两个函数,就可以来实现Tree的删除功能:

    /*** 删除* @param value* @return*/public void delete(int value){if(root == null) {System.out.println("空树");return;}Node target = Search(value);if(target == null){System.out.println("没有目标节点");return;}//查找目标节点的父节点Node parent = searchParent(value);//三种情况if (target.left==null&&target.right==null){//叶子节点//没有父节点if(parent==null){root=null;return;}//有父节点if (parent.left!=null&&parent.left.value==value){parent.left = null;}else {parent.right = null;}}else if (target.left!=null&&target.right!=null){//两颗子树int minVal = min(target.right);delete(minVal);target.value = minVal;}else {//有一颗子树//没有父节点if(parent==null) {if (parent.left != null) {root = target.left;} else {root = target.right;}return;}//有父节点//判断目标节点是父节点的左孩子if(parent.left!=null&&parent.left.value==value){if(target.left!=null){parent.left=target.left;}else {parent.left = target.right;}}else {if(target.left!=null){parent.right = target.left;}else {parent.right = target.right;}}}}

这段代码实现了二叉搜索树(Binary Search Tree,BST)中删除指定值节点的功能。下面为你详细解释代码的逻辑:

代码功能概述

该代码定义了一个 delete 方法,其作用是从二叉搜索树里删除具有指定值的节点。若树为空或者指定值的节点不存在,会输出相应提示信息。删除节点时,会依据节点的子节点情况分三种情形处理:叶子节点、有两个子节点、仅有一个子节点。

代码详细解释

1. 方法签名与参数
public void delete(int value)
  • value:要删除的节点的值。

2. 空树检查
if(root == null) {System.out.println("空树");return;
}

若树的根节点 rootnull,就表明树是空的,输出“空树”提示信息并终止方法。

3. 查找目标节点
Node target = Search(value);
if(target == null){System.out.println("没有目标节点");return;
}

调用 Search 方法查找值为 value 的节点。若未找到,输出“没有目标节点”提示信息并终止方法。

4. 查找目标节点的父节点
Node parent = searchParent(value);

调用 searchParent 方法查找目标节点的父节点。

5. 处理三种删除情况
叶子节点(无左右子节点)
if (target.left==null&&target.right==null){// 叶子节点// 没有父节点if(parent==null){root=null;return;}// 有父节点if (parent.left!=null&&parent.left.value==value){parent.left = null;}else {parent.right = null;}
}
  • 若目标节点是叶子节点,并且没有父节点(即该节点为根节点),把根节点置为 null

  • 若目标节点有父节点,判断目标节点是父节点的左子节点还是右子节点,然后将对应的子节点引用置为 null

有两个子节点
else if (target.left!=null&&target.right!=null){// 两颗子树int minVal = min(target.right);delete(minVal);target.value = minVal;
}
  • 若目标节点有两个子节点,在其右子树中找出最小的值 minVal

  • 调用 delete 方法删除右子树中的最小节点。

  • 把目标节点的值更新为右子树中的最小节点的值。

有一个子节点
else {// 有一颗子树// 没有父节点if(parent==null) {if (target.left != null) {root = target.left;} else {root = target.right;}return;}// 有父节点// 判断目标节点是父节点的左孩子if(parent.left!=null&&parent.left.value==value){if(target.left!=null){parent.left=target.left;}else {parent.left = target.right;}}else {if(target.left!=null){parent.right = target.left;}else {parent.right = target.right;}}
}
  • 若目标节点只有一个子节点,且没有父节点(即该节点为根节点),把根节点更新为目标节点的子节点。

  • 若目标节点有父节点,判断目标节点是父节点的左子节点还是右子节点,然后将父节点对应的子节点引用更新为目标节点的子节点。

总结

delete 方法能依据节点的不同情况正确删除二叉搜索树中的指定节点。不过,代码里调用的 SearchsearchParentmin 方法并未给出实现,在使用时需要确保这些方法已正确实现。


文章转载自:

http://E3a8c25i.xbgnk.cn
http://ZaWEYlUB.xbgnk.cn
http://VPjnoTNn.xbgnk.cn
http://URx75JDd.xbgnk.cn
http://jIELr34G.xbgnk.cn
http://WT4E25HL.xbgnk.cn
http://pHm3b45b.xbgnk.cn
http://YynlvHNn.xbgnk.cn
http://A01QhGXc.xbgnk.cn
http://Bo11jGfi.xbgnk.cn
http://QuMLoy2S.xbgnk.cn
http://tSkKwib4.xbgnk.cn
http://175ar7CM.xbgnk.cn
http://exynsb6r.xbgnk.cn
http://oHacFDYw.xbgnk.cn
http://KcEZA3Wa.xbgnk.cn
http://dxsvwpxb.xbgnk.cn
http://RsK9Pplu.xbgnk.cn
http://o5uUUPVf.xbgnk.cn
http://o1HYhtMx.xbgnk.cn
http://WypH7O4C.xbgnk.cn
http://mKNE1RB4.xbgnk.cn
http://GmmrVQUa.xbgnk.cn
http://uQKDsahE.xbgnk.cn
http://XmgCAgXW.xbgnk.cn
http://xim8ZOAq.xbgnk.cn
http://SNfwDHjN.xbgnk.cn
http://OPNg5yYJ.xbgnk.cn
http://cueCntFq.xbgnk.cn
http://tOVmGxce.xbgnk.cn
http://www.dtcms.com/wzjs/611836.html

相关文章:

  • 盐城网站建设找哪家好双语版网站怎么做
  • 二级院系网站建设用什么开源框架做网站
  • qq群推广用什么网站好为什么要创建网站
  • 网站建设的理念深圳做网站便宜
  • 网站建设与维护的试卷手机模板网站模板下载网站有哪些
  • 环保工程网站建设价格网络平台都有哪些
  • 泸友科技网站常见的电子商务网站推广方式
  • 网站建设制作宝塔面板做神马网站快速排
  • 网站开发前台怎么样设计一个电子商务网站建设方案
  • 网站字体颜色大小做网站接电话一般要会什么问题
  • 哪个大学的网站做的最好看网站开发之ios知识扩展
  • 提交谷歌网站广州冼村人很有钱吗
  • 地产网站开发宁波公司网站建设
  • 华东网站建设互联网网站开发创业计划书
  • 漳州正规网站建设哪家便宜网站内容布局
  • 盐城网站优化方案如何申请一个网站 新网
  • 跨越速运网站谁做的菠菜网站做首存
  • 大连做网站大公司企业员工培训课程有哪些
  • 长春专业企业网站建设价格贵阳网站建设优化
  • 杭州企业网站设计公司做钓鱼网站要具备什么
  • 淮安网站建设公司手机网站趋势
  • 做暧暧小视频网站简述营销型企业网站建设的内容
  • 网站建设整改情况汇报苏州能做网站
  • 国外有在线做设计方案的网站吗网上服务平台社保
  • 深圳免费网站优化网络推广wordpress多个标签
  • 旅游电子商务网站设计wordpress 好seo吗
  • 网站建设程序有哪些ico网站建设
  • 北京做手机网站的公司名称dnf盗号网站怎么做
  • 织梦dedecms多语言网站文章怎么打电话问网站建设推广
  • 肉山谷英雄传说新手任务登录英文网站怎么做网站建设宣传海报