对于删除操作,在完美的并查集中(所有节点都直接连接在根节点上),理论上只要把要删除的节点的上级重新指向自己就可以了。

但是实际情况中,并查集形成的树的形态都是不可预估的,如果直接将一个节点指向自己可能会将他的下级和他一起删除,这就与最初的想法违背了,所以在一个需要删除的并查集中初始化时就要处理一下:

  1. 首先可以将每一个点都设立一个虚拟父节点,这样根节点就是我们设立的虚拟节点,类似于将每个节点放到一个盒子中。
  2. 如果删除某点,那么可以修改当前节点的父节点来导致当前点的孤立,即删除时把这个节点从当前盒子拿出来,放到另一个盒子中。
  3. 由于节点之间都是通过盒子来确定关系的,所以盒子中元素是否存在并不影响节点之间的关系。

以下图为例:

如果要删除 2 号节点,那么我们把 2 拿出来放到另一个盒子中就可以了,可以看到原来的那个树结构并没有发生变化。但是 2 已经不在这里面了

实现:

//假设最多会有n个节点,就从n+1开始作为假节点int index;//存放盒子节点使用到哪一个了
void init(int n)
{index = n;for(int i=0;i<n;i++)//普通节点指向他的盒子节点pre[i]=index++;for(int i=n;i<2*n;i++)//盒子节点指向自己就像一般的并查集一样pre[i]=i;
}void del(int n)
{pre[n]=index;   //将要删除的节点重新指向一个新的盒子pre[index]=index++ ;   //盒子节点指向自己
}

树形结构 —— 并查集 —— 并查集的删除操作相关推荐

  1. 牛客多校8 - All-Star Game(线段树分治+并查集按秩合并的撤销操作)

    题目链接:点击查看 题目大意:有 n 个球员和 m 个球迷,一个球员可能是多个球迷的粉丝,需要选择最少的球员进行比赛,使得所有的球迷都愿意观看(对于每个球迷来说,都有至少一个其喜欢的球员入选比赛) 对 ...

  2. 树形结构 —— 并查集

    [概述] 并查集(Union-Find Set)是一种用于分离集合操作的抽象数据类型,其处理的是集合(set)之间的关系,一般处理的是图的连通分量,当给出两个的元素的一个无序对 (a,b) 时,需要快 ...

  3. hdu 2473(并查集+删除操作)

    解题思路:这道题有并查集的删除操作,如果直接对这一棵树进行删除节点操作肯定是很困难的.所以可以建立虚拟节点,只要有一个节点要被删除,就直接把它投影到虚拟节点上,即用这个虚拟节点来代替我们要删除的节点. ...

  4. element ui tree增删改查_clientgo连接K8s集群进行pod的增删改查

    背景 最近在看client-go源码最基础的部分,client-go的四类客户端,RestClient.ClientSet.DynamicClient.DiscoveryClient.其中RestCl ...

  5. HDU 2473 Junk-Mail Filter(并查集的删除操作)

    题目地址:HDU 2473 这题曾经碰到过,没做出来. .如今又做了做,还是没做出来. ... 这题涉及到并查集的删除操作.想到了设一个虚节点,可是我把虚节点设为了要删除的点的父节点.一直是栈溢出,目 ...

  6. 绿建科技加密图纸查看器安装_施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚...

    施工图看不懂?1.1G工程施工图纸详解,253页图文合集一查就清楚 只要是对建筑行业,有所了解的朋友都清楚,钢筋施工图纸对于建筑物,有着举足轻重的地位!一点都不得马虎大意,接触建筑行业,第一步还是需 ...

  7. Almost Union-Find UVA - 11987(并查集的删除操作)

    题意:求出每个集合的元素个数,及总和,给出三个操作: 1 将含有a元素和b元素的集合合并:2 将a元素放入含有b元素的集合中:3 输出a元素所在集合的元素个数及总和: 思路:正常并查集,与并查集元素的 ...

  8. vue实现树形结构增删改查

    其实很多公司都会有类似于用户权限树的增删改查功能,正好最近我刚写了一个树形结构的增删改,在这里和大家分享一下,如果有不合理的地方欢迎评论,我会尽快优化~~ 先附上一下效果图 这个是没有点击编辑时,产品 ...

  9. 洛谷 P1892 [BOI2003]团伙(并查集变种 反集)

    [BOI2003]团伙 题目描述 现在有 n n n 个人,他们之间有两种关系:朋友和敌人.我们知道: 一个人的朋友的朋友是朋友 一个人的敌人的敌人是朋友 现在要对这些人进行组团.两个人在一个团体内当 ...

最新文章

  1. java case or_java – 在CriteriaBuilder中使用子句和’case w...
  2. Micron Flash芯片识别心得
  3. dpkg安装软件流程_ubuntu安装搜狗输入法linux版
  4. Deep Residual Learning for Image Recognition(MSRA-深度残差学习)
  5. Kong 发布 Kong Brain 和 Kong Immunity,可进行智能自动化和适应性监控
  6. boost使用Proto转换来实现的例子
  7. php 标题去重复思想,WordPress网站发布文章时如何防止发布重复标题的文章?
  8. 2020运动相机推荐_2020年优秀户外运动相机推荐
  9. Mybatis_3.基于注解的增删改查
  10. 100句自我激励的名言佳句
  11. サファイア奇跡  2
  12. Tess4J 安装及使用介绍
  13. 游戏素材网站推荐!!!
  14. js 跨域获取cookie
  15. 关于等价鞅、反等价鞅、剀利公式、赌徒输光定理
  16. 微信小程序云开发 数据库
  17. html背景音乐自动播放embed,HTML中添加音乐video embed audio
  18. 服务器physx性能测试,望穿秋水! PhysX卡性能测试首度曝光
  19. Jointly Embedding Knowledge Graphs and Logical Rules
  20. vue mand-mobile ui加class不起作用的问题 css权重问题

热门文章

  1. ST-Link刷成J-Link
  2. S5PV210的内存映射
  3. 重构 - 美股行情系统APP推送改造
  4. 从0到1设计一个秒杀系统
  5. vue.js语法和常用指令
  6. 架构组件:基于Shard-Jdbc分库分表,数据库扩容方案
  7. 工厂方法模式(Factory Method Pattern)
  8. View 事件传递体系知识梳理(1) 事件分发机制
  9. 彻底理解mysql服务器的字符集转换问题
  10. android 关于关于子线程更新UI的一些事