// Задание 2: рекурсивный метод возвращает количество элементов с заданным значением в поддереве public int AmountOfValue(int value) { // если данное значение есть в рассматриваемой вершине int current = 0; if (Data == value) { ++current; } // выход из рекурсии. Случай листа(нет потомков) if (Left == null && Right == null) { return(current); } // случай сучка(есть только правый потомок) if (Left != null && Right == null) { return(current + Left.AmountOfValue(value)); } // случай сучка(есть только левый потомок) if (Left == null && Right != null) { return(current + Right.AmountOfValue(value)); } // случай сучка(есть оба потомка) if (Left != null && Right != null) { return(current + Left.AmountOfValue(value) + Right.AmountOfValue(value)); } // сюда программа дойти не может, поскольку разобраны всевозможные случаи return(-1); }