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

网站建设国外拂去其汉口企业制作网站的

网站建设国外拂去其,汉口企业制作网站的,wordpress模版开发,如何给喜欢的明星做网站首先查找元素是否在二叉搜索树中#xff0c;如果不存在#xff0c;则返回 要删除的结点可能分下面四种情况#xff1a; a. 要删除的结点无孩子结点 b. 要删除的结点只有左孩子结点 c. 要删除的结点只有右孩子结点 d. 要删除的结点有左、右孩子结点 看起来有待删除节点有4中…首先查找元素是否在二叉搜索树中如果不存在则返回 要删除的结点可能分下面四种情况 a. 要删除的结点无孩子结点 b. 要删除的结点只有左孩子结点 c. 要删除的结点只有右孩子结点 d. 要删除的结点有左、右孩子结点 看起来有待删除节点有4中情况实际情况a可以与情况b或者c合并起来因此真正的删除过程如下 情况1删除该结点 且使被删除节点的双亲结点指向被删除节点的左孩子结点--直接删除 情况2删除该结点 且使被删除节点的双亲结点指向被删除结点的右孩子结点--直接删除 情况3找它的右子树的最小值或者左子树的最大值用它的值填补到被删除节点中再来处理该结点的删除问题--替换法删除 tip 我们可以把一个父节点看作父亲每一个父亲只能照顾两个儿子 情况1和情况2如果这个父亲只有一个孩子要照顾或者一个也没有那么他想要脱身只需要把这个孩子托付给他的长辈没有就是nullptr我们可以把这个过程叫托孤 情况3就比较复杂这个父亲有两个孩子托孤就行不通了所以他要找一个人来代替他他需要满足两个条件 首先要确保他是可以脱身的他要是有一个孩子就托孤这样他就可以过来照顾这两个孩子了 其次他要满足照顾这两个孩子的条件这个节点的key值要比左子树的每个节点key都要大比右子树的每个节点key都要小 右子树的最小值或者左子树的最大值就满足这些条件我们可以把这个过程叫找月嫂 bool Erase(const K data) {node* parent nullptr;node* cur _root;while (cur cur-_data ! data)//找要删除的位置{parent cur;if (data cur-_data){cur cur-_left;}else{cur cur-_right;}}if (cur nullptr)return false;if (cur-_left nullptr)//托孤给父母{if (parent nullptr)//考虑特殊rootnullptr{_root cur-_right;}else{if (cur-_data parent-_data)parent-_left cur-_right;elseparent-_right cur-_right;}delete cur;}else if (cur-_right nullptr)//托孤给父母{if (parent nullptr)//考虑特殊rootnullptr{_root cur-_left;}else{if (cur-_data parent-_data)parent-_left cur-_left;elseparent-_right cur-_left;}delete cur;}else//找月嫂替代合适 有且只有一个娃或者没有{node* maxleft cur-_left;node* maxparent cur;while (maxleft-_right){maxparent maxleft;maxleft maxleft-_right;}cur-_data maxleft-_data;// maxparent-_right maxleft-_left;错误//月嫂托孤if (maxparent-_left maxleft)//maxparentcur{maxparent-_left maxleft-_left;}else{maxparent-_right maxleft-_left;}delete maxleft;}return true; } 注意特殊情况 1.在情况一和情况二下可能删除_root节点在函数里面就需要特殊考虑 2.情况三月嫂的托孤月嫂不一定是父亲的右孩子左子树最大值的前提下月嫂可能就是要被删除节点的左孩子所以也要妥善处理 递归版 bool _EraseR(node* root, const K data) {if (root nullptr)return false;if (data root-_data)return _EraseR(root-_left, data);else if (data root-_data)return _EraseR(root-_right, data);else{node* del root;if (root-_left nullptr){root root-_right;delete del;}else if (root-_right nullptr){root root-_left;delete del;}else{node* maxleft root-_left;while (maxleft-_right)maxleft maxleft-_right;del maxleft;swap(root-_data, maxleft-_data);_EraseR(root-_left, data);//转为子问题}return true;} } node* root 1.就不需要再找父节点了这样还少了判断被删除节点是父亲节点的左孩子还是右孩子 2.对于删除根节点的处理也可以不用特殊处理 _EraseR(root-_left, data);//转为子问题 月嫂托孤的过程转变为删除月嫂节点 搜索二叉树的删除时间复杂度O(N)
http://www.hkea.cn/news/14332504/

相关文章:

  • 网站建设与发布专业做商铺的网站
  • 当地信息网站建设资质宜昌网站制作公司
  • wordpress html 标签页网站关键词排名优化推广软件
  • 网站推广计划书范文房产采集网站源代码
  • 国内课程网站建设现状计算机类哪个专业前景好
  • 网站收录有什么用建设网站用什么语言
  • 企业网站 免费 php重庆模板做网站
  • 招聘网站建设人员糖果屋网站建设策划书
  • 中小型网站设计公司广州番禺区有什么好玩的
  • 青岛李沧网站建设圣辉友联做网站公司
  • 网站双语版的怎么制作wordpress调用文章的tag
  • 网站设计汕头wordpress dw插件
  • 如何在社交网站上做视频推广重庆百度推广关键词优化
  • 自适应网站导航是怎么做的wordpress百度抓取
  • 实时新闻最新消息哪里有整站优化
  • 淄博微网站开发郑州市公共资源交易中心
  • wordpress网站维护网页首页设计图片
  • wordpress网站打开满wordpress管理工具栏
  • 仙桃网站定制wordpress正文嵌入rss
  • 做网站百度云网络电商推广
  • 给个免费的网站好人有好报wordpress设置新页面
  • 亚马逊站外推广怎么做logo在线设计软件
  • 重大违法建设项目举报网站网站设计网上培训学校
  • 深圳建网站兴田德润可信上海做网站的公司哪个好
  • 贵州省建设厅官网站网站需要审核吗
  • 优化推广网站怎么做最好湘潭新思维网站
  • 网站推广方式百度云毕业设计做网站做什么好
  • 网站建设任务分解wordpress 企业网站 免费
  • 制作人在那个网站能看淄博网站关键词优化
  • 上海网站备案信息注销wordpress wpjam