public void TestPostTraversal(List <int> expected, SungBinaryTreeNode <int> root) { var sut = new SungBinaryTreeTraverser(); var actual = sut.TraversePost(root).ToList(); Assert.True(expected.SequenceEqual(actual)); }
public void TestBuildingTree(SungBinaryTreeNode <int> expected, int[] input) { var actual = new SungBinaryTreeBuilder().Build(input); var traverser = new SungBinaryTreeTraverser(); var expectedList = traverser.TraversePost(expected); var actualList = traverser.TraversePost(actual); Assert.True(expectedList.SequenceEqual(actualList)); }
private SungBinaryTreeNode <int> Build(int[] a, int min, int max) { if (min > max) { return(null); } var mid = (min + max) / 2; var node = new SungBinaryTreeNode <int>(a[mid]); node.Left = Build(a, min, mid - 1); node.Right = Build(a, mid + 1, max); return(node); }
public IEnumerable <int> TraversePost(SungBinaryTreeNode <int> root) { if (root == null) { yield break; } foreach (var value in TraversePost(root.Left)) { yield return(value); } foreach (var value in TraversePost(root.Right)) { yield return(value); } yield return(root.Value); }
public SungBinaryTreeNode <T> AddRight(T value) { Right = new SungBinaryTreeNode <T>(value); return(this); }
public SungBinaryTreeNode <T> AddLeft(T value) { Left = new SungBinaryTreeNode <T>(value); return(this); }