算法之不相交集合森林

来源:互联网 发布:淘宝创建宝贝 编辑:程序博客网 时间:2024/04/29 11:52
  1. package com.eshore.sweetop.exdataframe;
  2. public class DisjointSetForest {
  3.     
  4.     public void makeSet(DisjointSetNode node){
  5.         node.setParent(node);
  6.         node.setRank(0);
  7.     }
  8.     
  9.     public void link(DisjointSetNode nodex,DisjointSetNode nodey){
  10.         if(nodex.getRank()>nodey.getRank()){
  11.             nodey.setParent(nodex);
  12.         }else{
  13.             nodex.setParent(nodey);
  14.             if(nodex.getRank()==nodey.getRank()){
  15.                 nodey.setRank(nodey.getRank()+1);
  16.             }
  17.         }
  18.     }
  19.     
  20.     public void union(DisjointSetNode nodex,DisjointSetNode nodey){
  21.         link(findSet(nodex),findSet(nodey));
  22.     }
  23.     
  24.     public DisjointSetNode findSet(DisjointSetNode nodex){
  25.         if(nodex!=nodex.getParent()){
  26.             nodex.setParent(findSet(nodex.getParent()));
  27.         }
  28.         return nodex.getParent();
  29.     }
  30. }
原创粉丝点击