public void DepthTraversal_ShouldReturn_TraversedNodes_InDepthOrder() { // Arrange var root = new BinaryTree(1); root.AddLeft(new BinaryTree(2)); root.AddRight(new BinaryTree(3)); root.Left.AddLeft(new BinaryTree(4)); root.Left.AddRight(new BinaryTree(5)); root.Right.AddLeft(new BinaryTree(6)); root.Right.AddRight(new BinaryTree(7)); root.Left.Left.AddLeft(new BinaryTree(8)); root.Left.Left.AddRight(new BinaryTree(9)); var expectedTraversed = new List <int> { 1, 2, 4, 8, 9, 5, 3, 6, 7 }; var treeTraversal = new BinaryTreeTraversal(); // Act var traversed = treeTraversal.DepthTraversal(root); // Assert traversed.Should().BeEquivalentTo(expectedTraversed); }
public void PreOrderTraversalDCTest_Null() { StringBuilder resultStr = new StringBuilder(); BinaryTreeTraversal.PreOrderTraversalDC(null).Select(x => resultStr.Append(x)); String.Equals(new StringBuilder(""), resultStr); }
public void PreOrderTraversalDCTest() { StringBuilder resultStr = new StringBuilder(); BinaryTreeTraversal.PreOrderTraversalDC(GetBinaryTree()).Select(x => resultStr.Append(x)); String.Equals(new StringBuilder("12453"), resultStr); }
public void BuildFromInOrderAndPostOrder(int[] inOrder, int[] postOrder) { var tb = new BinTreeFromPostAndInOrder(); var root = tb.BuildTree(inOrder, postOrder); var treeTraverser = new BinaryTreeTraversal <int>(); Assert.Equal(inOrder, treeTraverser.InOrderTraversal(root)); }
public void Basic() { var node1 = new TreeNode(1); var node2 = new TreeNode(2); var node3 = new TreeNode(3); node1.right = node2; node2.left = node3; var traverser = new BinaryTreeTraversal <int>(); var inorderList = traverser.InOrderTraversal(node1); Assert.Equal(new [] { 1, 3, 2 }, inorderList); }
public void Left_chain() { var node1 = new TreeNode(1); var node2 = new TreeNode(2); var node3 = new TreeNode(3); node2.left = node1; node3.left = node2; var traverser = new BinaryTreeTraversal <int>(); var inorderList = traverser.InOrderTraversal(node3); Assert.Equal(new[] { 1, 2, 3 }, inorderList); }
public void Right_chain() { var node1 = new TreeNode(1); var node2 = new TreeNode(2); var node3 = new TreeNode(3); node1.right = node2; node2.right = node3; var traverser = new BinaryTreeTraversal <int>(); var postOrderList = traverser.PostOrderTraversal(node1); Assert.Equal(new[] { 3, 2, 1 }, postOrderList); }
public void Balanced() { var node1 = new TreeNode(1); var node2 = new TreeNode(2); var node3 = new TreeNode(3); node2.left = node1; node2.right = node3; var traverser = new BinaryTreeTraversal <int>(); var postOrderList = traverser.PostOrderTraversal(node2); Assert.Equal(new[] { 1, 3, 2 }, postOrderList); }
public void Failed_case() { var node1 = new TreeNode(1); var node2 = new TreeNode(2); var node3 = new TreeNode(3); var node4 = new TreeNode(4); node1.left = node4; node1.right = node3; node4.left = node2; var traverser = new BinaryTreeTraversal <int>(); var postOrderList = traverser.PostOrderTraversal(node1); Assert.Equal(new[] { 2, 4, 3, 1 }, postOrderList); }
/// <summary> /// Traverses the binary tree calling a visit method on each node. /// </summary> /// <param name="visitMethod">A method to be called on each visited node.</param> /// <param name="traversalMode">Mode of traversal to perform.</param> public void Traverse(BinaryTreeVisitDelegate <UserType> visitMethod, BinaryTreeTraversal traversalMode = BinaryTreeTraversal.Inorder) { if (visitMethod != null) { bool cancel = false; if (traversalMode == BinaryTreeTraversal.Inorder) { TraverseInorder(visitMethod, ref cancel, m_root); } else if (traversalMode == BinaryTreeTraversal.Preorder) { TraversePreorder(visitMethod, ref cancel, m_root); } else if (traversalMode == BinaryTreeTraversal.Postorder) { TraversePostorder(visitMethod, ref cancel, m_root); } } }