public static void Main(String[] args) { int n = 12;//DEPTH HARDCPDED ! // if (args.Length > 0) n = Int32.Parse(args[0]); int maxDepth = Math.Max(minDepth + 2, n); int stretchDepth = maxDepth + 1; int check = (TreeNode.bottomUpTree(0, stretchDepth)).itemCheck(); Console.Write("stretch tree of depth "); Console.Write(stretchDepth); Console.Write("\t check: "); Console.WriteLine(check); TreeNode longLivedTree = TreeNode.bottomUpTree(0, maxDepth); for (int depth = minDepth; depth <= maxDepth; depth += 2) { int iterations = 1 << (maxDepth - depth + minDepth); check = 0; for (int i = 1; i <= iterations; i++) { check += (TreeNode.bottomUpTree(i, depth)).itemCheck(); check += (TreeNode.bottomUpTree(-i, depth)).itemCheck(); } Console.Write(iterations * 2); Console.Write("\t trees of depth "); Console.Write(depth); Console.Write("\t check: "); Console.WriteLine(check); } Console.Write("long lived tree of depth "); Console.Write(maxDepth); Console.Write("\t check: "); Console.WriteLine(longLivedTree.itemCheck()); }