Example #1
0
        public static void MainMethod()
        {
            Console.WriteLine("Press x to exit");
            bool isContinue = true;

            {
                var selection = "4";// Console.ReadLine().Trim();
                isContinue = selection.ToLowerInvariant() != "x";
                if (!int.TryParse(selection, out int option))
                {
                    Console.WriteLine("Please try again ..");
                }

                switch (option)
                {
                case 1:
                    TreeRemove.Tests();
                    break;

                case 2:
                    MinHeapKClosestTests.Tests();
                    break;

                case 3:
                    WordCombinations.Tests();
                    break;

                case 4:
                    TreePaths.Tests();
                    break;
                }
            }

            Console.ReadLine();
        }
Example #2
0
        public static void Tests()
        {
            var tree = new TreePaths()
            {
                Root = new Node(3)
                {
                    Left = new Node(1)
                    {
                    },
                    Right = new Node(8)
                    {
                        Left = new Node(3)
                        {
                        },
                    }
                }
            };

            Console.WriteLine($"Number of paths for k = 11 -> {tree.CalculatePaths(11)}");
            Console.WriteLine($"CalculatePathsV2 -> Number of paths for k = 11 -> {tree.CalculatePathsV2(tree.Root, 11)}");

            var tree1 = new TreePaths()
            {
                Root = new Node(1)
                {
                    Right = new Node(2)
                    {
                        Right = new Node(3)
                        {
                            Right = new Node(4)
                            {
                                Right = new Node(5)
                                {
                                },
                            },
                        },
                    }
                }
            };

            Console.WriteLine($"Number of paths for k = 2 -> {tree1.CalculatePaths(3)}");

            Console.WriteLine();
            var tree2 = new TreePaths()
            {
                Root = new Node(50)
                {
                    Left = new Node(25)
                    {
                        Left    = new Node(12)
                        , Right = new Node(30)
                    },
                    Right = new Node(75)
                    {
                        Left    = new Node(60)
                        , Right = new Node(100)
                    }
                }
            };

            Console.WriteLine();
            Console.WriteLine("Level order");
            tree2.LevelOrder(tree2.Root);
            Console.WriteLine();
            Console.WriteLine("In order");
            tree2.InOrder(tree2.Root);
            tree2.DfsInOrderRecur(tree2.Root);
            Console.WriteLine();
            Console.WriteLine("Pre order");
            tree2.DfsPreOrder(tree2.Root);
            Console.WriteLine();
            Console.WriteLine("Pre order Recursive ");
            tree2.DfsPreOrderRecursive(tree2.Root);
            Console.WriteLine();
            Console.WriteLine("POST order");
            tree2.PostOrder(tree2.Root);

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

            tree2.PrintPaths(tree2.Root, new List <int>(), paths);
            tree2.Print();
            Console.WriteLine();
            foreach (var item in paths)
            {
                Console.WriteLine(string.Join(" ->", item));
            }

            var prefixSums = new List <int>();

            tree2.PrefixSum(tree2.Root, prefixSums);
            Console.WriteLine();
            foreach (var item in prefixSums)
            {
                Console.Write($"{item}");
            }
        }