所以我试着写一个递归函数,返回bst中一个元素的“尾集”。基本上,它返回每个大于输入的元素。这是我目前掌握的情况。
@Override
public SortedSet<E> tailSet(E toElement){
SortedSet<E> set = new SearchTreeSet<>();
tailSet(root, toElement, set);
return set;
}
private void tailSet(Node<E> n, E elt, SortedSet<E> set){
if(n == null){
return;
}
set.add((E) n.data);
tailSet(n.left, elt, set);
tailSet(n.right, elt, set);
}
所以这得到了bst的顺序输出,但是我不确定如何使用toelement变量。toelement是集合中的元素,我想用它作为我的基本情况,所以所有较大的元素都将放入sortedset集合中。我不知道该怎么做,任何帮助都将不胜感激。
构造函数是由我的教授定义的,所以我不能更改它们。
1条答案
按热度按时间syqv5f0l1#
只需在添加元素集之前比较元素,如果当前节点数据小于toelement,则立即返回。您可以将此条件添加到现有的if condition of tailset()中