网站单页在线制作软件微信小程序开发哪家好

张小明 2026/1/13 7:10:51
网站单页在线制作软件,微信小程序开发哪家好,永嘉网站建设几,网站开发前后端一、细节思考和分类我们删除二叉树的节点时候#xff0c;要保证删除以后的数据继续保持有序状态#xff0c;那么就会分为三种情况a.删除叶子节点#xff1b;b.删除只有一个子节点的节点#xff1b;c.删除有两个子节点的节点。二、实现思路和代码实现1.删除叶子节点实现思路…一、细节思考和分类我们删除二叉树的节点时候要保证删除以后的数据继续保持有序状态那么就会分为三种情况a.删除叶子节点b.删除只有一个子节点的节点c.删除有两个子节点的节点。二、实现思路和代码实现1.删除叶子节点实现思路①找到要删除的节点targetNode②找到targetNode的父节点parentNode判断是否存在③确定当前targetNode是parentNode的左子树和右子树④根据以上情况进行删除左子节点parentNode.lChildnull;右子节点: parentNode.rChildnull;代码实现://确定targetNode是parentNode的左子树还是右子树 if(parentNode.lChild!nullparentNode.lChildtarget){ parentNode.lChildnull; } else if(parentNode.rChild!nullparentNode.rChildtarget){ parentNode.rChildnull; }判断是targetNode是parentNode的左子树还是右子树,是哪边的树就让哪边指空.2.删除有两个子节点的节点实现思路:①找到要删除的节点targetNode②找到targetNode的父节点parentNode判断是否存在③去找targetNode的右子树的最小值;④将targetNode的右子树最小值替换掉targetNode的值;⑤删除targetNode右子树的最小值.代码实现:if(targetNode!nulltargetNode.rChild!null){ int minfindRightTreeMin(targetNode.rChild); targetNode.datamin; }3.删除只有一个子节点的节点实现思路:①找到要删除的节点targetNode②找到targetNode的父节点parentNode判断是否存在③确定当前targetNode是parentNode的左子树和右子树④判断targetNode的子节点是其左子树还是右子树:分为四种情况:如果targetNode是parentNode左子树Ⅰ targetNode有左子节点parentNode.lChildtargetNode.lChild;Ⅱ targetNode有右子节点parentNode.lChildtargetNode.rChild;如果targetNode是parentNode右子树Ⅲ targetNode有左子节点parentNode.rChildtargetNode.lChild;Ⅳ targetNode有右子节点parentNode.rChildtargetNode.rChild;代码实现:if(parentNode.lChild!null parentNode.lChild.data target){ //确定targetNode是parentNode的左子树 if(targetNode.lChild ! null){ //targetNode有左子结点 parentNode.lChild targetNode.lChild; }else { //targetNode有右子结点 parentNode.lChild targetNode.rChild; } }else if(parentNode.rChild!null parentNode.rChild.data target){ //确定targetNode是parentNode的右子树 if(targetNode.lChild ! null){ //targetNode有左子结点 parentNode.rChild targetNode.lChild; }else { //targetNode有右子结点 parentNode.rChild targetNode.rChild; }4.需要注意的点此外我们要注意一个点万一要删除的点仅有一个节点我们就要if(root.lChild null root.rChild null){ root null; return; }5.需要添加的额外方法分别是①找到要删除的节点// 找到要删除的节点 TreeNode findTarget(TreeNode root,Integer target){ if(root null){ return null; } //去找这个值 if(root.data target){ return root; }else if(target root.data){ //判断是否有左子树 if(root.lChild null){ return null; } return findTarget(root.lChild,target); }else { //判断是否有右子树 if (root.rChild null) { return null; } return findTarget(root.rChild, target); } }②找要删除节点的父节点//去找要删除节点的父节点 TreeNode findParent(TreeNode root,Integer target){ if(root null){ return null; } if((root.lChild!null) (root.lChild.data target) || (root.rChild!null) (root.rChild.data target)){ return root; }else { if(root.lChild!null target root.data){ return findParent(root.lChild,target); }else if(root.rChild!null target root.data){ return findParent(root.rChild,target); }else { return null; } } }③找右子树的最小值public int findRightTreeMin(TreeNode node){ while (node.lChild !null){ node node.lChild; } int min node.data; delete(root, min); return min; }三、完整代码的运行和运行结果完整代码TreeNode findTarget(TreeNode root,Integer target){ if(root null){ return null; } //去找这个值 if(root.data target){ return root; }else if(target root.data){ //判断是否有左子树 if(root.lChild null){ return null; } return findTarget(root.lChild,target); }else { //判断是否有右子树 if (root.rChild null) { return null; } return findTarget(root.rChild, target); } } //去找要删除节点的父节点 TreeNode findParent(TreeNode root,Integer target){ if(root null){ return null; } if((root.lChild!null) (root.lChild.data target) || (root.rChild!null) (root.rChild.data target)){ return root; }else { if(root.lChild!null target root.data){ return findParent(root.lChild,target); }else if(root.rChild!null target root.data){ return findParent(root.rChild,target); }else { return null; } } } /** * 去找右子树的最小值 * param node * return */ public int findRightTreeMin(TreeNode node){ while (node.lChild !null){ node node.lChild; } int min node.data; delete(root, min); return min; } public void delete(TreeNode root,Integer target){ if(root null){ return; } //2.万一要删的节点只有一个节点 if(root.lChild null root.rChild null){ root null; return; } //1.去找被删除的节点 TreeNode targetNode findTarget(root,target); if(targetNode null){ //找不到 return; } //3.找到父节点 TreeNode parentNode findParent(root,target); //分情况进行删除 if(targetNode.lChild null targetNode.rChild null){ //叶子节点 //确定targetNode是parentNode的左子树还是右子树 if(parentNode.lChild ! null parentNode.lChild.data target){ parentNode.lChild null; }else if(parentNode.rChild ! null parentNode.rChild.data target){ parentNode.rChild null; } }else if(targetNode.lChild ! null targetNode.rChild ! null){ //有两个子节点的节点 int min findRightTreeMin(targetNode.rChild); targetNode.data min; }else { //targetNode 只有一个子节点的节点 //确定targetNode是parentNode的左子树还是右子树 if(parentNode.lChild!null parentNode.lChild.data target){ //确定targetNode是parentNode的左子树 if(targetNode.lChild ! null){ //targetNode有左子结点 parentNode.lChild targetNode.lChild; }else { //targetNode有右子结点 parentNode.lChild targetNode.rChild; } }else if(parentNode.rChild!null parentNode.rChild.data target){ //确定targetNode是parentNode的右子树 if(targetNode.lChild ! null){ //targetNode有左子结点 parentNode.rChild targetNode.lChild; }else { //targetNode有右子结点 parentNode.rChild targetNode.rChild; } } } }测试类构建相应的树然后指出删除节点运行结果
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

企业网站新闻如何建设ios网站开发

20251223给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时使用weston-screenshooter截屏【修改直接编译进IMG固件】 2025/12/23 19:23缘起:给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】后,需要使用weston-screens…

张小明 2025/12/26 9:34:31 网站建设

广州住房与建设网站六安电商网站建设哪家好

Excalidraw 与量子计算:当手绘风格遇上算法结构设计 在一场远程的量子算法研讨会上,团队正试图解释 Grover 搜索的迭代机制。白板上密密麻麻的线条和门符号让人眼花缭乱,而某位成员脱口而出:“如果能一句话就画出这个电路该多好&a…

张小明 2026/1/4 22:41:19 网站建设

湘潭建设路街道网站wordpress去掉仪表盘

凌晨3点还在机房蹲守排障?搭建实验环境反复踩坑?考认证练手找不到真实设备?作为网络工程师,我们每天要和拓扑图、命令行、故障日志打交道,选对工具真的能少走N多弯路——既能节省80%的无效时间,还能让技术成…

张小明 2026/1/5 19:07:28 网站建设

怎么学做电商然后自己创业深圳百度seo关键词排名

Windows系统数据备份、恢复与还原全攻略 1. 数据备份的重要性与工具概述 数据备份是管理员的重要工作,大型网络通常每天都会进行备份,而小型工作组或单机电脑备份频率可能较低。若不确定备份频率,可评估自上次备份后工作的重要性,想象重新创建这些数据的难度。例如,有人在…

张小明 2026/1/6 17:38:45 网站建设

商务网站建设毕业设计模板大牌装修公司

1 技术背景压力场是描述流场中各空间点压力大小的标量分布函数,其空间变化(压力梯度)反映流体微团在分子热运动与宏观流动相互作用下的动量传递特性。无论是飞行器的气动升力、船体结构的载荷分析,还是心脏瓣膜的血流冲击&#xf…

张小明 2025/12/31 18:49:00 网站建设

杭州网站推广宣传华为官方手机商城

零基础学大数据隐私保护:3个月系统学习计划权威资源推荐 元数据框架 标题:零基础入门大数据隐私保护:3个月阶梯式学习计划(附书籍/课程/工具清单) 关键词:大数据隐私保护;零基础学习计划&#x…

张小明 2026/1/1 9:01:52 网站建设