DisjointSetNode <T> GetParent(DisjointSetNode <T> item) { if (item.Parent != item) { var par = GetParent(item.Parent); item.Parent = par; return(par); } return(item); }
public void MakeSet(T input) { DisjointSetNode node = new DisjointSetNode(input) { Parent = Tree.Count }; Tree.Add(node); return; }
public DisjointSetNode(TValue value, DisjointSetNode <TValue>?parent = null) { Value = value; Parent = parent ?? this; Rank = 0; }