public static Node Parse(string tree) { var parser = new BinaryTreeParser(); foreach (char ch in tree) { switch (ch) { case '(': parser.StartNode(); break; case ')': parser.EndNode(); break; case '/': parser.AddLeft(); break; case '\\': parser.AddRight(); break; default: if (char.IsLetterOrDigit(ch)) { parser.m_ValueBuffer.Append(ch); } break; } } return(parser.m_Root); }
public static Node Parse(string tree) { var parser = new BinaryTreeParser(); foreach (char ch in tree) { switch (ch) { case '(': parser.StartNode(); break; case ')': parser.EndNode(); break; case '/': parser.AddLeft(); break; case '\\': parser.AddRight(); break; default: if (char.IsLetterOrDigit(ch)) { parser.m_ValueBuffer.Append(ch); } break; } } return parser.m_Root; }
public void BreadthFirstTree_Iterator_Using_IEnumerator_Test() { const string treeStr = @" (ROOT) " + " / \\ " + " (A) (B) " + " / \\ / " + " (C) (D) (E) "; const string expected = "ROOT;B;A;E;D;C;"; var rootNode = BinaryTreeParser.Parse(treeStr); var tree = new BreadthFirstTree(rootNode); var actual = new StringBuilder(); using (var iterator = tree.GetEnumerator()) { while (iterator.MoveNext()) { var currentValue = iterator.Current.Value; actual.Append(currentValue); actual.Append(";"); } } Assert.AreEqual(expected, actual.ToString()); }
public void DepthFirstTree_Iterator_Using_IEnumerable_Test() { const string treeStr = @" (ROOT) " + " / \\ " + " (A) (B) " + " / \\ / " + " (C) (D) (E) "; const string expected = "ROOT;B;E;D;A;C;"; var root = BinaryTreeParser.Parse(treeStr); var tree = new DepthFirstTree(root); string actual = tree .Select(node => node.Value) .Aggregate(string.Empty, (current, nodeValue) => current + nodeValue + ";"); Assert.AreEqual(expected, actual); }