static void DFS(Node node, int currSum) { currSum += node.Value; used.Add(node); for (int i = 0; i < node.ChildrenCount; i++) { if (used.Contains(node.GetNode(i))) { continue; } DFS(node.GetNode(i), currSum); } Console.Write("{0} ->", node.Value); // if reached another leaf, check sums if (node.ChildrenCount == 1) { if (currSum > maxSum) { maxSum = currSum; } } }