public static void DepthFirstTraverseTree(TreeNode root, FuncForDealEachNodeWhenDepthFirstTraverse func) { DepthFirstTraverseTree(root, 0, func); }
private static void DepthFirstTraverseTree(TreeNode node, int depth, FuncForDealEachNodeWhenDepthFirstTraverse func) { int childCount = 0; foreach(var child in node.Childrens) { DepthFirstTraverseTree(child, depth + 1, func); childCount++; } if (func != null) func(node, depth, childCount); }