using System.Collections.Generic;
public static void Main()
new Node(new List<Node>() {
new Node(new List<Node>() {
IEnumerable<string> inOrderValues = PreOrderValues(root);
foreach (var inOrderValue in inOrderValues) {
Console.WriteLine(inOrderValue);
Console.WriteLine("---");
IEnumerable<string> postOrderValues = PostOrderValues(root);
foreach (var postOrderValue in postOrderValues) {
Console.WriteLine(postOrderValue);
public static IEnumerable<string> PreOrderValues(Node node) {
public static IEnumerable<string> PostOrderValues(Node node) {
public List<Node> Children { get; set; }
public string Value { get; set; }
public Node(List<Node> children, string value) {
this.Children = children != null ? children : new List<Node>();