union-find算法(路径压缩+加权quick-union算法 数组实现)

算法第四版曾提过,通过路径压缩实现几乎(注意几乎)完全扁平化的树,为何我要说注意几乎,因为书作者数据给的好,我通过实现发现利用
书中数据

自己将结果画图发现和加权quick-union效果一样,然后我检查代码,又上网查找发现代码没错,原来是我理解有误,错误就在几乎这两个字上
这里写图片描述

注意这图和我上篇博文中的加权quick-union效果一样(上篇博文入口),按照我的错误理解效果应该是除了6–6其他都在一排的,应为他们是一个连通分量,应该让他们都指向根节点,这样当然可以,通过一个for循环就可以,不过这样一下又回到解放前(甚至还倒退在quick-find算法的基础倒退),那路径·压缩是干嘛的呢??的确是用来将一颗子树节点练到根节点上,不过这种是具有概率性的,因为连通性的点只能指向他的前一个点,则当这个点是中间的点就尴尬了,你从find(p)给定的点只能向上遍历,将前驱连到根节点,可是p的子节点就无缘了,如果后面操作没有针对p的子节点,那恐怕只有认命了

下面给出 路径压缩 + 加权quick-union算法实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值