示例#1
0
        public static void Main(String[] args)
        {
            //Medzio duomenys

            Saka saknis = NaujaSaka(1);

            (saknis.sakos).Add(NaujaSaka(2));
            (saknis.sakos).Add(NaujaSaka(3));
            (saknis.sakos[0].sakos).Add(NaujaSaka(4));
            (saknis.sakos[1].sakos).Add(NaujaSaka(5));
            (saknis.sakos[1].sakos).Add(NaujaSaka(6));
            (saknis.sakos[0].sakos[0].sakos).Add(NaujaSaka(7));
            (saknis.sakos[1].sakos[0].sakos).Add(NaujaSaka(8));
            (saknis.sakos[1].sakos[1].sakos).Add(NaujaSaka(9));
            (saknis.sakos[1].sakos[0].sakos[0].sakos).Add(NaujaSaka(10));
            (saknis.sakos[1].sakos[0].sakos[0].sakos).Add(NaujaSaka(11));
            (saknis.sakos[1].sakos[1].sakos[0].sakos).Add(NaujaSaka(12));
            (saknis.sakos[1].sakos[1].sakos[0].sakos).Add(NaujaSaka(13));
            (saknis.sakos[1].sakos[1].sakos[0].sakos).Add(NaujaSaka(14));
            (saknis.sakos[1].sakos[1].sakos[0].sakos[2].sakos).Add(NaujaSaka(14));



            Console.WriteLine($"Medzio gylis yra: {sakosGylis(saknis)}");
        }
示例#2
0
        //Sukuria nauja  šaka
        public Saka NaujaSaka(int key)
        {
            Saka temp = new Saka();

            temp.Name  = key;
            temp.sakos = new List <Saka>();
            return(temp);
        }
示例#3
0
        //Naujos Sakos sukurymas
        static Saka NaujaSaka(int id)
        {
            Saka nSaka = new Saka();

            nSaka.id    = id;
            nSaka.sakos = new List <Saka>();
            return(nSaka);
        }
示例#4
0
            public static int MaxDepth(Saka root, int maxDepthThreshold, int depth)
            {
                if (root.children == null || !root.children.Any())
                {
                    return(depth);
                }

                if (depth == maxDepthThreshold)
                {
                    return(depth);
                }

                return(root.children.Max(x => MaxDepth(x, maxDepthThreshold, depth++)));
            }
示例#5
0
        //Sakos gylio paieska
        static int sakosGylis(Saka sg)
        {
            if (sg == null)
            {
                return(0);
            }

            int gylis = 0;

            foreach (Saka rek in sg.sakos)
            {
                gylis = sakosGylis(rek);
            }
            return(gylis + 1);
        }
示例#6
0
        //Rekursija.Ggražina aukšti(gyli) nuo nurodytos šakos
        private int HighestDepth(Saka saka)
        {
            //patikrina ar madis netuščias ir jei netuščias iškart priskiria aukšti 1
            if (saka == null)
            {
                return(0);
            }
            int deepest = 1;

            // suranda sakos gyli ir išsaugo ilgiausią šaką, galima daryti ir su foreach
            for (int i = 0; i < saka.sakos.Count; i++)
            {
                int maxDepth = 1 + HighestDepth(saka.sakos[i]);
                deepest = (maxDepth > deepest) ? maxDepth : deepest;
            }
            return(deepest);
        }
示例#7
0
        static void Main(string[] args)
        {
            Saka medis =
                new Saka(1,
                         new Saka(2,
                                  new Saka(3)),
                         new Saka(4,
                                  new Saka(5,
                                           new Saka(6)),
                                  new Saka(7,
                                           new Saka(8,
                                                    new Saka(9)),
                                           new Saka(10)),
                                  new Saka(11))
                         );

            medis.GiliausiasLygis();
        }
示例#8
0
        public void GetDepth()
        {
            var saka8 = new Saka();
            var saka7 = new Saka();
            var saka5 = new Saka();
            var saka6 = new Saka();
            var saka3 = new Saka(0, new List <Saka> {
                saka5, saka6, saka7, saka8
            });
            var saka2 = new Saka();
            var saka4 = new Saka();
            var saka1 = new Saka(0, new List <Saka> {
                saka3, saka2
            });

            Console.WriteLine("Max Depth = " + MaximumDepth.MaxDepth(saka1, 1000, 1));

            Console.ReadKey();
        }