java-返回bst中某个元素之后的每个节点

qyuhtwio  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(373)

所以我试着写一个递归函数,返回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集合中。我不知道该怎么做,任何帮助都将不胜感激。
构造函数是由我的教授定义的,所以我不能更改它们。

syqv5f0l

syqv5f0l1#

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

相关问题