using System.Collections.Generic;
private List<Branch> branches;
public int Depth => GetDepth();
branches = new List<Branch>();
public void AddBranch(Branch branch)
public Branch GetBranch(int index)
private int GetDepth(int currentDepth = 1)
return branches.Max(branch => branch.GetDepth(currentDepth + 1));
public static void Main()
Branch tree = initializeTree();
Console.WriteLine(RecursiveMethodMeasureDepth(tree));
Console.WriteLine(tree.Depth);
static int RecursiveMethodMeasureDepth(Branch branch, int currentDepth = 1)
return Enumerable.Range(0, branch.Count())
.Max(i => RecursiveMethodMeasureDepth(branch.GetBranch(i), currentDepth + 1));
static Branch initializeTree()
Branch root = new Branch();
Branch branch2 = new Branch();
Branch branch3 = new Branch();
Branch branch4 = new Branch();
branch2.AddBranch(branch4);
Branch branch5 = new Branch();
Branch branch6 = new Branch();
Branch branch7 = new Branch();
branch3.AddBranch(branch5);
branch3.AddBranch(branch6);
branch3.AddBranch(branch7);
Branch branch8 = new Branch();
branch5.AddBranch(branch8);
Branch branch9 = new Branch();
Branch branch10 = new Branch();
branch6.AddBranch(branch9);
branch6.AddBranch(branch10);
Branch branch11 = new Branch();
branch9.AddBranch(branch11);