IEnumerable <int> TraversePostOrder(TraverseNode root) { if (root.Left != null) { foreach (var value in TraversePostOrder(root.Left).ToList()) { yield return(value); } } if (root.Right != null) { foreach (var value in TraversePostOrder(root.Right).ToList()) { yield return(value); } } yield return(root.Value); }
void TestPostOrderTraversal(TraverseNode root, int[] expected) { var actual = TraversePostOrder(root).ToList(); Assert.True(expected.SequenceEqual(actual)); }