Реализация определенных методов в классе BST - PullRequest
0 голосов
/ 14 ноября 2018

Рассмотрим следующие определения классов BSTNode и BST:

public class BSTNode<T extends Comparable<? super T>> {
 protected T el;
 protected BSTNode<T> left, right;
 public BSTNode() {
 left = right = null;
 }
 public BSTNode(T el) {
 this(el,null,null);
 }
 public BSTNode(T el, BSTNode<T> lt, BSTNode<T> rt) {
 this.el = el; left = lt; right = rt;
 }
}
public class BST<T extends Comparable<? super T>> {
 protected BSTNode<T> root = null;
 public BST() {
 }
….
}

как я могу реализовать метод в классе BST для подсчета количества правильных детей в BST

1 Ответ

0 голосов
/ 14 ноября 2018

Насколько я понимаю, число правых потомков узла может быть подсчитано рекурсивно следующим образом.

Сначала реализуем рекурсивный метод в классе 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...