private FlatBST.TreeNode BuildTree(IEnumerable <int> values) { FlatBST.TreeNode rootNode, currentNode, nextNode; rootNode = null; foreach (int value in values) { if (rootNode == null) { rootNode = new FlatBST.TreeNode() { Value = value }; continue; } currentNode = rootNode; nextNode = new FlatBST.TreeNode() { Value = value }; while (true) { if (value < currentNode.Value) { if (currentNode.Left == null) { currentNode.Left = nextNode; break; } else { currentNode = currentNode.Left; } } else { if (currentNode.Right == null) { currentNode.Right = nextNode; break; } else { currentNode = currentNode.Right; } } } } return(rootNode); }
public void Test1() { FlatBST.TreeNode rootNode = this.BuildTree(new int[] { 10, 5, 1, 2, 3, 4, 6, 7, 9, 8 }); FlatBST.TreeNode newRootNode = FlatBST.Solve(rootNode); List <int> result = new List <int>(); while (newRootNode != null) { result.Add(newRootNode.Value); newRootNode = newRootNode.Right; } CollectionAssert.AreEqual(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, result.ToArray()); }