public void ShouldReturnLeastCommonAncestorWith12Nodes()
        {
            var rootNode        = TreeTestData.GetComplexTreeRootNodeWith12Nodes();
            var nodeWithValue10 = TreeDSNode.Create(10);
            var nodeWithValue12 = TreeDSNode.Create(12);
            LeastCommonAncestor leastCommonAncestor = new LeastCommonAncestor();
            var actualLCA = leastCommonAncestor.Find(rootNode, nodeWithValue10, nodeWithValue12);

            Assert.AreEqual(10, actualLCA.Value);
        }
Exemple #2
0
        // Tree structure (right splay tree)
        //        1
        //         2
        //          3
        //           4
        //            5
        //             6

        public static TreeDSNode GetRightSplayTreeRootNode()
        {
            TreeDSNode nodeWithValue6, root;

            nodeWithValue6 = TreeDSNode.Create(6);
            TreeDSNode nodeWithValue5 = new TreeDSNode(5, null, nodeWithValue6);
            TreeDSNode nodeWithValue4 = new TreeDSNode(4, null, nodeWithValue5);
            TreeDSNode nodeWithValue3 = new TreeDSNode(3, null, nodeWithValue4);
            TreeDSNode nodeWithValue2 = new TreeDSNode(2, null, nodeWithValue3);

            root = new TreeDSNode(1, nodeWithValue2, null);
            return(root);
        }
Exemple #3
0
        // Tree structure
        //       1
        //    2    3
        //   4 5  6

        public static TreeDSNode GetSimpleTreeRootNode()
        {
            TreeDSNode nodeWithValue4, nodeWithValue6, root;

            nodeWithValue4 = TreeDSNode.Create(4);
            var nodeWithValue5 = TreeDSNode.Create(5);

            nodeWithValue6 = TreeDSNode.Create(6);
            TreeDSNode nodeWithValue2 = new TreeDSNode(2, nodeWithValue4, nodeWithValue5);
            TreeDSNode nodeWithValue3 = new TreeDSNode(3, nodeWithValue6, null);

            root = new TreeDSNode(1, nodeWithValue2, nodeWithValue3);
            return(root);
        }
        public void ShouldReturnLeastCommonAncestor()
        {
            var rootNode       = TreeTestData.GetComplexTreeRootNode();
            var nodeWithValue4 = TreeDSNode.Create(4);
            var nodeWithValue5 = TreeDSNode.Create(5);
            var nodeWithValue3 = TreeDSNode.Create(3);
            LeastCommonAncestor leastCommonAncestor = new LeastCommonAncestor();
            var actualLCA = leastCommonAncestor.Find(rootNode, nodeWithValue4, nodeWithValue5);

            Assert.AreEqual(2, actualLCA.Value);

            actualLCA = leastCommonAncestor.Find(rootNode, nodeWithValue4, nodeWithValue3);
            Assert.AreEqual(1, actualLCA.Value);
        }
Exemple #5
0
        // Tree structure
        //        1
        //     3      2
        //      6   5    4
        //              8  7
        public static TreeDSNode GetRootNodeOfComplexTreeMirror()
        {
            TreeDSNode nodeWithValue4, nodeWithValue7, nodeWithValue8, root;

            nodeWithValue4 = TreeDSNode.Create(4);
            nodeWithValue7 = TreeDSNode.Create(7);
            nodeWithValue8 = TreeDSNode.Create(8);
            var        nodeWithValue6 = TreeDSNode.Create(6);
            var        nodeWithValue5 = new TreeDSNode(5, nodeWithValue8, nodeWithValue7);
            TreeDSNode nodeWithValue2 = new TreeDSNode(2, nodeWithValue5, nodeWithValue4);
            TreeDSNode nodeWithValue3 = new TreeDSNode(3, null, nodeWithValue6);

            root = new TreeDSNode(1, nodeWithValue3, nodeWithValue2);
            return(root);
        }
Exemple #6
0
        // Tree structure
        //        1
        //    2       3
        //  4   5   6
        //     7 8
        public static TreeDSNode GetComplexTreeRootNode()
        {
            TreeDSNode nodeWithValue4, nodeWithValue7, nodeWithValue8, root;

            nodeWithValue4 = TreeDSNode.Create(4);
            nodeWithValue7 = TreeDSNode.Create(7);
            nodeWithValue8 = TreeDSNode.Create(8);
            var        nodeWithValue6 = TreeDSNode.Create(6);
            var        nodeWithValue5 = new TreeDSNode(5, nodeWithValue7, nodeWithValue8);
            TreeDSNode nodeWithValue2 = new TreeDSNode(2, nodeWithValue4, nodeWithValue5);
            TreeDSNode nodeWithValue3 = new TreeDSNode(3, nodeWithValue6, null);

            root = new TreeDSNode(1, nodeWithValue2, nodeWithValue3);
            return(root);
        }
Exemple #7
0
        // Tree structure
        //        70
        //    80       47
        //  90   108   99
        //     54 77
        public static TreeDSNode GetRootNodeOfComplexTreeWithHighervalue()
        {
            TreeDSNode nodeWithValue4, nodeWithValue7, nodeWithValue8, nodeWithValue6, root;

            nodeWithValue4 = TreeDSNode.Create(90);
            nodeWithValue7 = TreeDSNode.Create(54);
            nodeWithValue8 = TreeDSNode.Create(77);
            var nodeWithValue5 = TreeDSNode.Create(108);

            nodeWithValue6 = new TreeDSNode(99, nodeWithValue7, nodeWithValue8);
            TreeDSNode nodeWithValue2 = new TreeDSNode(80, nodeWithValue4, nodeWithValue5);
            TreeDSNode nodeWithValue3 = new TreeDSNode(47, nodeWithValue6, null);

            root = new TreeDSNode(70, nodeWithValue2, nodeWithValue3);
            return(root);
        }
Exemple #8
0
        // Tree structure
        //        1
        //    2       3
        //  4    5       10
        // 6 7  8  9         11
        //                 12
        public static TreeDSNode GetComplexTreeRootNodeWith12Nodes()
        {
            TreeDSNode nodeWithValue4, nodeWithValue11, nodeWithValue10, root;
            TreeDSNode nodeWithValue7  = TreeDSNode.Create(7);
            TreeDSNode nodeWithValue8  = TreeDSNode.Create(8);
            TreeDSNode nodeWithValue9  = TreeDSNode.Create(9);
            TreeDSNode nodeWithValue12 = TreeDSNode.Create(12);

            nodeWithValue11 = new TreeDSNode(11, nodeWithValue12, null);
            nodeWithValue10 = new TreeDSNode(10, null, nodeWithValue11);
            var nodeWithValue6 = TreeDSNode.Create(6);

            nodeWithValue4 = new TreeDSNode(4, nodeWithValue6, nodeWithValue7);
            var        nodeWithValue5 = new TreeDSNode(5, nodeWithValue8, nodeWithValue9);
            TreeDSNode nodeWithValue2 = new TreeDSNode(2, nodeWithValue4, nodeWithValue5);
            TreeDSNode nodeWithValue3 = new TreeDSNode(3, null, nodeWithValue10);

            root = new TreeDSNode(1, nodeWithValue2, nodeWithValue3);
            return(root);
        }
 public TreeTraversal(int rootValue, IConsoleWriter console = null)
 {
     this.console = console;
     root         = TreeDSNode.Create(rootValue);
 }