大连商城网站制作图片编辑网页版

张小明 2026/1/3 6:14:12
大连商城网站制作,图片编辑网页版,网站网站开发者犯法吗,山东关键词网络推广前置知识#xff1a;二叉树的构建和增删改查-CSDN博客 1.二叉树的删除特点 1.1 基本概念 二叉树的删除操作是指在二叉树中移除某个特定节点#xff0c;同时需要保持二叉树的基本性质不变。删除操作比插入操作更为复杂#xff0c;因为需要考虑被删除节点的子树如何重新连接…前置知识二叉树的构建和增删改查-CSDN博客1.二叉树的删除特点1.1 基本概念二叉树的删除操作是指在二叉树中移除某个特定节点同时需要保持二叉树的基本性质不变。删除操作比插入操作更为复杂因为需要考虑被删除节点的子树如何重新连接到树上。1.2 删除操作的三种主要情况1.2.1 删除叶子节点无子节点这是最简单的情况直接移除该节点即可示例在二叉树中删除节点5假设5是叶子节点5 / \ 3 7删除后3 \ 71.2.2 删除只有一个子节点的节点将该节点的子节点提升到被删除节点的位置示例删除节点3它只有右子节点75 / \ 3 8 \ 7删除后5 / \ 7 81.2.3 删除有两个子节点的节点这是最复杂的情况通常有以下两种处理方法方法一使用前驱节点左子树的最大值找到被删除节点左子树中的最大值节点用这个最大值节点替换被删除节点删除原最大值节点递归处理方法二使用后继节点右子树的最小值找到被删除节点右子树中的最小值节点用这个最小值节点替换被删除节点删除原最小值节点递归处理示例删除节点55 / \ 3 8 / \ / \ 2 4 7 9使用后继节点方法找到右子树最小值7用7替换5删除原7节点结果7 / \ 3 8 / \ / \ 2 4 92.操作流程图示操作可见1.22.1 除叶子节点定位需要删除的目标节点targetNode查找targetNode的父节点parentNode并判断其是否存在确定targetNode是parentNode的左子树还是右子树根据节点位置执行删除操作若为左子节点将parentNode.lChild置为null若为右子节点将parentNode.rChild置为null2.2 删除只有一个子树的节点定位需要删除的目标节点targetNode查找targetNode的父节点parentNode需判断是否存在确定targetNode在parentNode中的位置左子树或右子树根据targetNode的子节点情况进行处理情况一targetNode是parentNode的左子树若targetNode存在左子节点parentNode.lChild targetNode.lChild若targetNode存在右子节点parentNode.lChild targetNode.rChild情况二targetNode是parentNode的右子树若targetNode存在左子节点parentNode.rChild targetNode.lChild若targetNode存在右子节点parentNode.rChild targetNode.rChild2.3 删除有两子树的节点定位目标删除节点targetNode查找targetNode的父节点parentNode需判断是否存在在targetNode的右子树中寻找最小值节点用右子树最小值节点的值替换targetNode的值删除右子树中的最小值节点3. 前置操作3.1 创建方法用于寻找targetNodepublic TreeNode findTarget(TreeNode root, Integer target) { if (root null || target null) return null; TreeNode cur root; while (cur ! null) { if (cur.data.equals(target)) { return cur; } else if (cur.data target) { cur cur.rChild; } else { cur cur.lChild; } } return null; }3.2 创建方法用于去找要删除的节点的父节点public TreeNode findParent(TreeNode root,Integer target){ if(rootnull){ return null; } if((root.lChild!null) (root.lChild.data.equals(target))|| (root.rChild!null) (root.rChild.data.equals(target))){ return root; }else { if(root.lChild!null targetroot.data){ return findParent(root.lChild,target); }else if(root.rChild!null targetroot.data){ return findParent(root.rChild,target); }else { return null; } } }3.3 寻找右子树的最小节点public int findRightTreeMin(TreeNode node){ while (node.lChild!null){ node node.lChild; } int min node.data; delete(root,min); return min; }4.删除节点4.1 删除的节点只有一个节点if(root.lChildnull root.rChildnull){//删除的是叶子节点 rootnull; return; }4.2 叶子节点if (targetNode.lChild null targetNode.rChild null) { // 叶子节点 // 确定targetNdoe 是parentNode的左子节点还是右子节点 if (parentNode.lChild ! null parentNode.lChild.data.equals(target)) { parentNode.lChild null; }else if (parentNode.rChild ! null parentNode.rChild.data.equals(target)) { parentNode.rChild null; }4.3 两个子节点if (targetNode.lChild ! null targetNode.rChild ! null) { // 两个子节点的节点 int min findRightTreeMin(targetNode.rChild);//寻找右子树最小的节点 targetNode.data min; }4.4 只有一个子节点的节点if(parentNode.lChild!null parentNode.lChild.data.equals(target)){ // targetNode是parentNode的左子节点 if(targetNode.lChild!null){//删除的是有子节点的节点 parentNode.lChild targetNode.lChild; }else if(targetNode.rChild!null){//删除的是有子节点的节点 parentNode.lChild targetNode.rChild; } }else if(parentNode.rChild!null parentNode.rChild.data.equals(target)){ // targetNode是parentNode的右子节点 if(targetNode.lChild!null){//删除的是有子节点的节点 parentNode.rChild targetNode.lChild; }else if(targetNode.rChild!null){//删除的是有子节点的节点 parentNode.rChild targetNode.rChild; } }完整代码//删除节点 public void delete(TreeNode root,Integer target){ if (rootnull){ return; } //2.万一要删除的节点只有一个节点 if(root.lChildnull root.rChildnull){//删除的是叶子节点 rootnull; return; } //1.找要删除的节点 TreeNode targetNode findTarget(root,target); if(targetNodenull){ return; } //3.找到父节点 TreeNode parentNode findParent(root,target); // 请你进行讲解 if (targetNode.lChild null targetNode.rChild null) { // 叶子节点 // 确定targetNdoe 是parentNode的左子节点还是右子节点 if (parentNode.lChild ! null parentNode.lChild.data.equals(target)) { parentNode.lChild null; }else if (parentNode.rChild ! null parentNode.rChild.data.equals(target)) { parentNode.rChild null; } } else if (targetNode.lChild ! null targetNode.rChild ! null) { // 两个子节点的节点 int min findRightTreeMin(targetNode.rChild);//寻找右子树最小的节点 targetNode.data min; } else { // 只有一个子节点的节点 // 确定targetNdoe 是parentNode的左子节点还是右子节点 if(parentNode.lChild!null parentNode.lChild.data.equals(target)){ // targetNode是parentNode的左子节点 if(targetNode.lChild!null){//删除的是有子节点的节点 parentNode.lChild targetNode.lChild; }else if(targetNode.rChild!null){//删除的是有子节点的节点 parentNode.lChild targetNode.rChild; } }else if(parentNode.rChild!null parentNode.rChild.data.equals(target)){ // targetNode是parentNode的右子节点 if(targetNode.lChild!null){//删除的是有子节点的节点 parentNode.rChild targetNode.lChild; }else if(targetNode.rChild!null){//删除的是有子节点的节点 parentNode.rChild targetNode.rChild; } } }总结删除二叉树中的节点需要根据节点类型叶子节点、单子节点、双子节点采取不同策略同时保持二叉树的特性如二叉搜索树的顺序性。删除叶子节点直接移除该节点并将其父节点的对应子节点指针置空。无需调整树结构。删除单子节点将该节点的唯一子节点提升到被删除节点的位置保持树的连通性。删除双子节点对于有两个子节点的节点通常采用以下两种方法之一方法1前驱替换法找到左子树的最大节点前驱用其值替换待删除节点然后递归删除前驱节点。方法2后继替换法找到右子树的最小节点后继用其值替换待删除节点然后递归删除后继节点。完整删除流程二叉搜索树示例定位待删除节点及其父节点根据节点类型选择删除策略维护树结构完整性返回更新后的树根节点
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

企业网站建设变相收取等级保护费6深圳的建站公司

MusicFree歌单导入快速上手:一键迁移网易云QQ音乐收藏 【免费下载链接】MusicFree 插件化、定制化、无广告的免费音乐播放器 项目地址: https://gitcode.com/maotoumao/MusicFree 还在为更换音乐平台时丢失精心整理的歌单而烦恼吗?MusicFree的歌单…

张小明 2025/12/21 6:14:11 网站建设

广州市网络广告推广企业逆冬黑帽seo培训

2025年将尽,TED发布了年内十个最热门的演讲,排在第一的是英国调查记者卡罗尔・卡德瓦拉德(Carole Cadwalladr)的演说,主题是This is what a digital coup looks like,暂译为“这就是一场数字政变的模样”。…

张小明 2025/12/21 6:12:09 网站建设

长沙网站建设公司名单排名

对于许多即将毕业的学生而言,毕业论文像是一道横亘在学业终点前的“关卡”:选题时面对海量文献的“信息过载”,研究设计时因经验不足陷入“方法论困境”,写作时被学术规范与逻辑表达“双重束缚”。这些挑战不仅消耗着时间与精力&a…

张小明 2026/1/3 0:49:55 网站建设

无锡大型网站建设公司wordpress 页面nofollow

扩展 Puppet 基础设施:Cacti 模块的深入实践 1. 引言 在 Puppet 管理的基础设施中,Cacti 作为一款强大的网络监控工具,其设备管理和配置的自动化至关重要。本文将详细介绍如何使用 Puppet 模块来管理 Cacti 设备,包括设备添加、移除、处理复杂操作以及自定义类型和提供者…

张小明 2025/12/21 6:08:06 网站建设

qq群推广网站免费wordpress获取当前分类下的子分类

Windows HEVC解码终极指南:一键解决4K视频播放问题 【免费下载链接】在Windows1011安装免费的HEVC解码插件64位86位 本资源文件提供了在Windows 10/11系统上安装免费的HEVC解码插件的解决方案。HEVC(高效视频编码)是一种先进的视频压缩标准&a…

张小明 2025/12/31 22:43:29 网站建设

单页销售网站模板电子商务网站建设的总体目标

4.5 约束优化与拉格朗日乘子法:支持向量机的数学基础 在许多人工智能与机器学习问题中,我们寻找的最优解不仅需要优化某个目标函数,还必须满足一系列附加条件或限制,这类问题被称为约束优化问题。支持向量机作为经典的监督学习模型,其核心数学形式便是一个带不等式约束的…

张小明 2025/12/21 6:04:04 网站建设