在BST类中实现某些方法

时间:2018-11-14 14:01:46

标签: java tree binary-search-tree

请考虑以下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 :(得分:0)

据我所知,节点的右子节点数可以按以下方式递归计算。

首先,在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中的左右子树。