public void Invert_a_binary_tree()
        {
            //Given
            var invertBinaryTree = new InvertBinaryTree();



            var tree3 = new TreeNode(1);
            var tree4 = new TreeNode(3);
            var tree5 = new TreeNode(6);
            var tree6 = new TreeNode(9);

            var tree1 = new TreeNode(2, tree3, tree4);
            var tree2 = new TreeNode(7, tree5, tree6);

            var rootTree = new TreeNode(4, tree1, tree2);

            //When
            var result = invertBinaryTree.InvertTree(rootTree);

            //Then
            result.left.val.Should().Be(7);
            result.right.val.Should().Be(2);

            result.left.left.val.Should().Be(9);
            result.left.right.val.Should().Be(6);
            result.right.left.val.Should().Be(3);
            result.right.right.val.Should().Be(1);
        }
Exemple #2
0
        public static void InvertBinaryTreeTest()
        {
            var root = TreeUtils.CreateRandomTree();

            TreeUtils.PrintTree(root);
            Console.WriteLine();
            root = InvertBinaryTree.InvertTree(root);
            //Assert.AreEqual(root.left.data, inverted.right.data);
            //Assert.AreEqual(root.right.data, inverted.left.data);

            TreeUtils.PrintTree(root);
        }
Exemple #3
0
        public void TestInvent()
        {
            //完整的情况
            var root = new TreeNode(4);

            root.Left        = new TreeNode(2);
            root.Right       = new TreeNode(7);
            root.Left.Left   = new TreeNode(1);
            root.Left.Right  = new TreeNode(3);
            root.Right.Left  = new TreeNode(6);
            root.Right.Right = new TreeNode(9);

            root = InvertBinaryTree.Invent(root);

            Assert.AreEqual(root.Left.Val, 7);
            Assert.AreEqual(root.Right.Val, 2);
            Assert.AreEqual(root.Left.Left.Val, 9);
            Assert.AreEqual(root.Left.Right.Val, 6);
            Assert.AreEqual(root.Right.Left.Val, 3);
            Assert.AreEqual(root.Right.Right.Val, 1);

            //不完整的情况
            root                 = new TreeNode(1);
            root.Left            = new TreeNode(2);
            root.Right           = new TreeNode(3);
            root.Left.Left       = new TreeNode(4);
            root.Left.Right      = new TreeNode(5);
            root.Right.Right     = new TreeNode(6);
            root.Left.Right.Left = new TreeNode(7);


            root = InvertBinaryTree.Invent(root);

            Assert.AreEqual(root.Left.Val, 3);
            Assert.AreEqual(root.Right.Val, 2);
            Assert.AreEqual(root.Left.Left.Val, 6);
            Assert.AreEqual(root.Right.Left.Val, 5);
            Assert.AreEqual(root.Right.Right.Val, 4);
            Assert.AreEqual(root.Right.Left.Right.Val, 7);
        }
Exemple #4
0
        static void Main(string[] args)
        {
            SortedMatrixSearch.Run();
            SparseSearch.Run();
            SearchInRotatedArray.Run();
            GroupAnagrams.Run();
            CombinationsOfNPairsParentheses.Run();
            PermutationWithDuplicates.Run();
            PermutationNoDuplicates.Run();

            var subsetList = new List <List <int> >();

            subsetList = SubsetInSet.FindAllSubsetInSet(new List <int> {
                1, 2, 3
            });
            ReverseLinkedList.Run();
            IsUniqueString.Run();
            StoneDivisionProblem.Run();
            Kangaroo.Run();
            AppleAndOrange.Run();
            AbbreviationProblem.Run();
            FibonacciModifiedProblem.Run();
            RecursiveDigitSum.Run();
            RangeSumOfBST.Run();
            GradingStudentsProblem.Run();
            // XorSequenceProblem.Run();
            CounterGameProblem.Run();
            MaximizingXORProblem.Run();
            LonelyIntegerProblem.Run();
            FlippingBitsProblem.Run();
            QueueUsingTwoStacksProblem.Run();
            GetNodeValue.Run();
            MergeTwoSortedLinkedLists.Run();
            Compare_Two_linked_lists.Run();

            DeleteNodeProblem.Run();
            ArrayManipulationProblem.Run();
            LeftRotationProblem.Run();
            HourGlass2D.Run();
            SimpleTextEditorProblem.Run();
            EqualStacksProblem.Run();
            MaximumElementProblem.Run();
            BinarySearchTreeInsertion.Run();
            TopViewProblem.Run();
            TimeConvertsionProblem.Run();
            BinaryTreePathsProblem.Run();
            IncreasingOrderSearchTree.Run();
            RemoveAllAdjacentDuplicatesInStringWithKLength.Run();
            RemoveAllAdjacentDuplicatesInString.Run();
            CheckStraightLineProblem.Run();
            HouseRobber.Run();
            UniquePathsProblem.Run();
            FirstUniqueCharacterInString.Run();
            BinaryTreeInorderTraversal.Run();
            DailyTemperaturesProblem.Run();
            CountingBitsproblem.Run();
            SortIntegersByTheNumberOf1BitsProblem.Run();
            HammingDistanceProblem.Run();
            RansomNoteProblem.Run();
            ConvertBinaryNumberInLinkedListToIntegerProblem.Run();
            NumberOfStepsToReduceNumberToZeroProblem.Run();
            JewelsAndStones.Run();
            ClimbingStairsProblem.Run();
            BestTimeToBuyAndSellStock.Run();
            MajorityElementProblem.Run();
            MoveZeroesProblem.Run();
            InvertBinaryTree.Run();
            SingleNumberProblem.Run();
            MaximumDepthInTrree.Run();
            MergeTwoBinaryTrees.Run();
            AddBinaryProblem.Run();
            PlusOneProblem.Run();
            LengthOfLastWordProblem.Run();
            KadaneAlgorithmForMaxSubArray.Run();
            KMPAlgorithm.Run();
            CountAndSayProblem.Run();
            SearchInsertPosition.Run();
            ImplementIndexOfString.Run();
            RemoveElement.Run();
            RemoveDuplicatesFromSortedArray.Run();
            MergeTwoSortedLists.Run();
            ValidParentheses.Run();
            LongestCommonPrefix.Run();
            RomanToInteger.Run();
            PalindromeNumber.Run();
            ReverseInteger.Run();
            TwoSumProblem.Run();
            AddOneToNumber.Run();
            MostAmountOfChange.Run();
            #region BinaryTree
            LeastCommonAncestor.Run();
            PrintAllPaths.Run();
            HasPathSum.Run();
            CheckIfBinaryTreeIsBinarySearchTree.Run();
            PrintAllNodesWithRangeInBinarySearchTree.Run();
            UniqueTreeStructureNumber.Run();
            MirrorTree.Run();
            #region BitManuiplation_GetNthNumber
            NumberOfStepsToReduceNumberToZeroProblem.Run();
            CountNumbersOf1InBit.Run();
            ReverseThebitsInInteger.Run();
            PrintBitsInInteger.Run();
            GetNthBit.Run();
            setNthBitTo1.Run();
            SetNthBitTo0.Run();
            #endregion
            MinimumtValueInTrree minValueInTree = new MinimumtValueInTrree();
            minValueInTree.Run();
            #endregion

            #region Recursion
            Chessboard chessboard = new Chessboard();
            chessboard.Run();
            RatPathToMaze ratPathToMaze = new RatPathToMaze();
            ratPathToMaze.Run();
            List <string> anagramList = new List <string>();
            anagramList        = WordAnagram.GenerateWordAnagram("abc");
            Pixel[,] pixelList = new Pixel[3, 3] {
                { new Pixel(0, 0, "red"), new Pixel(0, 1, "green"), new Pixel(0, 2, "green") },
                { new Pixel(1, 0, "red"), new Pixel(1, 1, "green"), new Pixel(1, 2, "green") },
                { new Pixel(2, 0, "red"), new Pixel(2, 1, "green"), new Pixel(2, 2, "green") }
            };
            FillPaint.PaintFill(pixelList, 1, 2, "green", "black");

            BinaryTreesAreTheSame.Run();

            #endregion

            #region General problems
            RotateArrayByKSpaces.Run();

            #region AddtwoNumbersReferencedByTheirDigits
            var addRes = AddtwoNumbersReferencedByTheirDigits.AddNumbers(new int[] { 1, 2, 7 }, new int[] { 9, 4 });
            #endregion

            #region RunLengthEncoding
            var encodedStr = RunLengthEncoding.Encode("aabbbbc");
            var decodedStr = RunLengthEncoding.Decode(encodedStr);
            #endregion

            #region BreakDocumentIntoChunk
            var chunkRes = BreakDocumentIntoChunk.Chunkify("ab:dd:ddfcct:aab:cccc", ':', 5);
            #endregion

            #region GameOfLife
            var gameRes = GameOfLife.GetNextInteration(new int[3, 3] {
                { 1, 0, 0 }, { 0, 1, 1 }, { 1, 0, 0 }
            });
            #endregion .

            #endregion


            #region InsertionSort
            InsertionSort.insertionSort(listToSort);
            #endregion

            #region BinarySearch
            Console.WriteLine(String.Format("%s is present at index: %s", 30, BinarySearch.binarySearch(sortedArray, 30, 0, sortedArray.Length - 1)));
            Console.WriteLine(String.Format("%s is present at index: %s", 4, BinarySearch.binarySearch(sortedArray, 4, 0, sortedArray.Length - 1)));
            Console.WriteLine(String.Format("%s is present at index: %s", 15, BinarySearch.binarySearch(sortedArray, 15, 0, sortedArray.Length - 1)));
            #endregion


            #region MergeSort
            MergeSort.print(listToSort);
            MergeSort.mergeSort(listToSort);
            #endregion


            #region QuickSort
            QuickSort.print(listToSort);
            QuickSort.quickSort(listToSort, 0, listToSort.Length - 1);
            QuickSort.print(listToSort);
            #endregion
        }
        public void InvertTreeTests()
        {
            InvertBinaryTree obj = new InvertBinaryTree();

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

            var x = obj.InvertTree(node);//

            node = new TreeNode(4)
            {
                left = new TreeNode(9)
                {
                    left = new TreeNode(5)
                    {
                    },
                    right = new TreeNode(1)
                    {
                    }
                },
                right = new TreeNode(0)
                {
                }
            };

            x = obj.InvertTree(node);//

            node = new TreeNode(3)
            {
                left = new TreeNode(9)
                {
                },
            };

            obj.InvertTree(node);//

            node = new TreeNode(0)
            {
                left = new TreeNode(0)
                {
                    left = new TreeNode(5)
                    {
                    },
                    right = new TreeNode(1)
                    {
                    }
                },
                right = new TreeNode(0)
                {
                }
            };

            x = obj.InvertTree(node);//
        }