请考虑以下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中正确的子代数
答案 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
中的左右子树。