Насколько я понимаю, число правых потомков узла может быть подсчитано рекурсивно следующим образом.
Сначала реализуем рекурсивный метод в классе BSTNode
.
public int GetNumOfRightChildren()
{
int Result = 0;
if (null != right)
Result = 1 + right.GetNumOfRightChildren();
return Result;
}
Затем этот метод можно сделать доступным очень похожим способом в классе BST
следующим образом.
public int GetNumOfRightChildren()
{
int Result = 0;
if (null != root)
Result = 1 + root.GetNumOfRightChildren();
return Result;
}
Если изменение реализации BSTNode
не разрешено, задача не может быть решена, так какправое и левое поддеревья в BSTNode
недоступны из класса BST
.