这还算并查集吗?
形似。
其实就是用了父节点表示法的树和森林 这种意义上来说更像是模拟做法。
每读入一根树枝A->B, 判断A==B,如果相等,构成自环,可断定不是树。
如果已经有节点指向B了,也可断定不是树,因为树除了根节点入度为零外,其余节点入度为一。不可能有一个以上的结点指向某节点。
若非以上情况,说明这根树枝是合法的,将B节点指向A节点。
在全部数据输入完毕后。
判断所有结点的根结点是否相同,如果相同则是树。
寻找根结点的操作室一直沿着from成员向上追溯。
这里要想办法判断出成环的情况,因为如果成环,寻找根结点的操作将无法返回。
解决的办法是,规定一个追溯次数1000,若大于1000仍未找到,认为成环。
代码如下:
验证树结构算法
本文介绍了一种使用父节点表示法来验证给定边集是否能构成一棵树的算法。通过检查自环、节点入度及根节点一致性,该方法能够有效判断输入数据是否符合树的定义,并采用递归方式寻找根节点,特别设计了防止无限循环的机制。
1万+

被折叠的 条评论
为什么被折叠?



