Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void PreOrderTraversalDCTest_Null()
        {
            StringBuilder resultStr = new StringBuilder();

            BinaryTreeTraversal.PreOrderTraversalDC(null).Select(x => resultStr.Append(x));

            String.Equals(new StringBuilder(""), resultStr);
        }
Beispiel #3
0
        public void PreOrderTraversalDCTest()
        {
            StringBuilder resultStr = new StringBuilder();

            BinaryTreeTraversal.PreOrderTraversalDC(GetBinaryTree()).Select(x => resultStr.Append(x));

            String.Equals(new StringBuilder("12453"), resultStr);
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
         }
     }
 }