Java—返回BST中某个元素之后的每个节点

Java—返回BST中某个元素之后的每个节点,java,binary-search-tree,Java,Binary Search Tree,所以我试图编写一个递归函数,它返回BST中元素的“尾集”。基本上,它返回大于输入的每个元素。这是我到目前为止所拥有的 @Override public SortedSet<E> tailSet(E toElement){ SortedSet<E> set = new SearchTreeSet<>(); tailSet(root, toElement, set); return set; } priva

所以我试图编写一个递归函数,它返回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);

  }
@覆盖
公共分拣集尾箱(E-toElement){
SortedSet集合=新的SearchTreeSet();
尾集(根、尾元素、尾集);
返回集;
}
专用空尾套件(节点n、E elt、分拣集套件){
如果(n==null){
返回;
}
设置。添加((E)n.数据);
尾座(左、左、左、右);
尾座(右侧、左侧、右侧);
}
这会得到BST的顺序输出,但我不确定如何使用toElement变量。toElement是集合中的元素,我想将其用作基本情况,因此所有较大的元素都将放入SortedSet集合中。我不知道我需要怎么做,任何帮助都将不胜感激


构造函数是由我的教授定义的,所以我不能更改它们

您只需要在添加元素集之前比较元素,若当前节点数据小于toElement,则立即返回。您可以在tailset()的现有if条件中添加此条件。

如何将节点的数据与泛型类型进行比较?有关比较泛型类型的信息,请参阅此内容。@paul如果答案有助于您选择它作为正确答案。