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)}"); }
//Sukuria nauja šaka public Saka NaujaSaka(int key) { Saka temp = new Saka(); temp.Name = key; temp.sakos = new List <Saka>(); return(temp); }
//Naujos Sakos sukurymas static Saka NaujaSaka(int id) { Saka nSaka = new Saka(); nSaka.id = id; nSaka.sakos = new List <Saka>(); return(nSaka); }
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++))); }
//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); }
//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); }
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(); }
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(); }