Пример #1
0
        public void FistCommonAncestor()
        {
            TreeNode a = new TreeNode(1);
            TreeNode b = new TreeNode(1);
            TreeNode c = new TreeNode(1);
            TreeNode d = new TreeNode(1);
            TreeNode e = new TreeNode(1);

            a.Left  = b;
            b.Left  = c;
            b.Right = d;
            a.Right = e;

            var result = TreesAndGraphs.FirstCommonAncestor(a, a, a);

            Assert.AreSame(a, result);

            result = TreesAndGraphs.FirstCommonAncestor(a, a, b);
            Assert.AreSame(a, result);

            result = TreesAndGraphs.FirstCommonAncestor(a, b, c);
            Assert.AreSame(b, result);

            result = TreesAndGraphs.FirstCommonAncestor(a, a, c);
            Assert.AreSame(a, result);

            result = TreesAndGraphs.FirstCommonAncestor(a, d, e);
            Assert.AreSame(a, result);
        }
Пример #2
0
        public void TestFirstCommonAncestor()
        {
            // Arrange

            // null case
            BTNode <int> nullRoot  = null;
            BTNode <int> nullCaseA = new BTNode <int>(1);
            BTNode <int> nullCaseB = new BTNode <int>(2);

            // common cases
            BTNode <int> commonCaseRoot = new BTNode <int>(6);
            BTNode <int> commonNode4    = new BTNode <int>(4);
            BTNode <int> commonNode8    = new BTNode <int>(8);

            commonCaseRoot.Left  = commonNode4;
            commonCaseRoot.Right = commonNode8;
            BTNode <int> commonNode1 = new BTNode <int>(1);
            BTNode <int> commonNode5 = new BTNode <int>(5);

            commonNode4.Left  = commonNode1;
            commonNode4.Right = commonNode5;
            BTNode <int> commonNode0 = new BTNode <int>(0);
            BTNode <int> commonNode3 = new BTNode <int>(3);

            commonNode1.Left  = commonNode0;
            commonNode1.Right = commonNode3;
            BTNode <int> commonNode7 = new BTNode <int>(7);
            BTNode <int> commonNode9 = new BTNode <int>(9);

            commonNode8.Left  = commonNode7;
            commonNode8.Right = commonNode9;

            // Act
            BTNode <int> nullResult        = TreesAndGraphs.FirstCommonAncestor(nullRoot, nullCaseA, nullCaseB);
            BTNode <int> commonCaseResult1 = TreesAndGraphs.FirstCommonAncestor(commonCaseRoot, commonNode3, commonNode5);
            BTNode <int> commonCaseResult2 = TreesAndGraphs.FirstCommonAncestor(commonCaseRoot, commonNode0, commonNode9);
            BTNode <int> commonCaseResult3 = TreesAndGraphs.FirstCommonAncestor(commonCaseRoot, commonNode9, commonNode7);

            // Assert
            Assert.IsNull(nullResult);
            Assert.AreEqual(commonNode4, commonCaseResult1);
            Assert.AreEqual(commonCaseRoot, commonCaseResult2);
            Assert.AreEqual(commonNode8, commonCaseResult3);
        }