private IEnumerable<OneHeightTree> GetNodeUnits(ConnectedComponent graph, MatchComponent component)
{
//var nodes = graph.Nodes;
//foreach (var node in graph.Nodes.Values)
foreach (var node in graph.Nodes.Values.Where(n => !component.Nodes.Contains(n)))
{
var remainingEdges = node.Neighbors.Where(e => !component.EdgeMaterilizedDict.ContainsKey(e)).ToList();
if (component.UnmaterializedNodeMapping.ContainsKey(node) ||
remainingEdges.Any(e => component.Nodes.Contains(e.SinkNode)))
{
yield return new OneHeightTree
{
TreeRoot = node,
Edges = remainingEdges
};
}
}
}