public static List <T> MidOrderWalk <T>(BinaryTreeNode <T> tree, TreeWalkType treeWalkType = TreeWalkType.Normal) where T : IComparable <T> { var output = new List <T>(); if (TreeWalkType.Normal == treeWalkType) { MidOrderNormal(tree, output); } else { MidOrderRecursively(tree, output); } return(output); }
public static List <T> PostOrderWalk <T>(BinaryTreeNode <T> tree, TreeWalkType treeWalkType = TreeWalkType.Normal) where T : IComparable <T> { IEnumerable <T> output; if (TreeWalkType.Normal == treeWalkType) { var p = new Stack <T>(); PostOrderNormal(tree, p); output = p; } else { var p = new List <T>(); PostOrderRecursively(tree, p); output = p; } return(output.ToList()); }