【查并集】java代码实现
2021/12/4 17:16:35
本文主要是介绍【查并集】java代码实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
思路
查并集是针对多树情况下的一种处理方式,核心是两个方法
1.find():用于在多树情况下检查两个节点是否属于同一棵树内
2.join():用于合并两棵树
节点类构造
info用于存储信息,pre用于存储该节点的前驱节点,isFather用于表示该节点是否是父亲节点
private int info; private Point pre=null; private Boolean isFather=true;
find()方法
递归获取该节点的最终父节点
public Point findFather(Point p){ if(p.getPre()==null){ return p; }else{ return findFather(p.getPre()); } }
join()方法
传入两节点并取这两个节点的父节点,进行比较,若两节点归属于同意父节点则结束运行,若两节点归属于不同父节点则取其中一个节点的父节点以子节点的身份加入另一棵树
public void join(Point p1,Point p2){ Point p1Father = findFather(p1); Point p2Father = findFather(p2); if(p1.equals(p2)){ return; }else{ p1Father.setFather(false); p1Father.setPre(p2Father); } }
完整代码
节点类
package FindJoinSet; public class Point { private int info; private Point pre=null; private Boolean isFather=true; public Boolean getFather() { return isFather; } public void setFather(Boolean father) { isFather = father; } public int getInfo() { return info; } public void setInfo(int info) { this.info = info; } public Point getPre() { return pre; } public void setPre(Point pre) { this.pre = pre; } }
并查集类
package FindJoinSet; public class FindJoinSet { public Point findFather(Point p){ if(p.getPre()==null){ return p; }else{ return findFather(p.getPre()); } } public void join(Point p1,Point p2){ Point p1Father = findFather(p1); Point p2Father = findFather(p2); if(p1.equals(p2)){ return; }else{ p1Father.setFather(false); p1Father.setPre(p2Father); } } }
这篇关于【查并集】java代码实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南