예제 #1
0
        public void TestPathSumIII()
        {
            //懒到只想一次弄完=-=
            var root = new TreeNode <int>(10)
                       .AddChildrenNode(
                new TreeNode <int>(5)
                .AddChildrenNode(
                    new TreeNode <int>(3)
                    .AddChildrenNode(new TreeNode <int>(3), new TreeNode <int>(-2)),
                    new TreeNode <int>(2)
                    .AddChildrenNode(null, new TreeNode <int>(1))),
                new TreeNode <int>(-3)
                .AddChildrenNode(null, new TreeNode <int>(11)));

            var demo   = new PathSumIII();
            var simple = demo.Simple(root, 8);

            _output.WriteLine($"simple:{simple}");

            Assert.Equal(3, simple);

            var nextRoot = new TreeNode <int>(8)
                           .AddChildrenNode(
                new TreeNode <int>(-2)
                .AddChildrenNode(
                    new TreeNode <int>(2),
                    new TreeNode <int>(8)),
                new TreeNode <int>(3));

            var next = demo.Simple(nextRoot, 6);

            _output.WriteLine($"simple:{next}");
        }
예제 #2
0
        public void PathSumTests()
        {
            PathSumIII obj = new PathSumIII();

            TreeNode node = new TreeNode(1)
            {
                left = new TreeNode(2)
                {
                    left  = new TreeNode(4),
                    right = new TreeNode(5)
                },
                right = new TreeNode(3)
                {
                }
            };

            var x = obj.PathSum(node, 7);//2

            var i = Helpers.GenerateBinaryTree(new int?[] { 10, 5, -3, 3, 2, null, 11, 3, -2, null, 1 });

            //Return 3.The paths that sum to 8 are:

            //1.  5-> 3
            //2.  5-> 2-> 1
            //3. - 3-> 11
            x = obj.PathSum(i, 8);//3

            node = new TreeNode(1)
            {
            };

            x = obj.PathSum(node, 0);//0
        }