using System.Collections.Generic;
public static void Main()
var adjacencyList = new Dictionary<int, int[]>();
adjacencyList.Add(1, new int[]{2, 3, 4, 5, 6, 7});
adjacencyList.Add(2, new int[]{4, 5, 6, 7});
adjacencyList.Add(3, new int[]{});
adjacencyList.Add(4, new int[]{5, 6, 7});
adjacencyList.Add(5, new int[]{6});
adjacencyList.Add(6, new int[]{});
adjacencyList.Add(7, new int[]{});
adjacencyList.Add(9, new int[]{10, 11});
adjacencyList.Add(10, new int[]{11});
adjacencyList.Add(11, new int[]{});
var baseNodes = FindBaseNodes(adjacencyList);
foreach (var baseNode in baseNodes)
Console.WriteLine(baseNode);
public static List<int> FindBaseNodes(Dictionary<int, int[]> adjacencyList)
var baseNodes = new List<int>();
foreach (var node in adjacencyList.Keys)
var foundAsChild = false;
foreach (var node1 in adjacencyList.Keys)
foreach (var childNode in adjacencyList[node1])