private SortedSet <int> GetNodes(CompressedNode node) { if (!node.ReferenceId.HasValue) { return(node.ExtraNodes); } var referenceNode = GraphStructure.FirstOrDefault(x => x.Id == node.ReferenceId.Value); var allExtraNodes = GetNodes(referenceNode); var filteredExtraNodes = new SortedSet <int>(); for (int i = 0; i < node.ReferenceList.Count; i++) { if (node.ReferenceList[i]) { filteredExtraNodes.Add(allExtraNodes.ElementAt(i)); } } foreach (var extraNode in node.ExtraNodes) { filteredExtraNodes.Add(extraNode); } return(filteredExtraNodes); }
public void AddNode(CompressedNode node) { GraphStructure.Add(node); }