2016-03-28 50 views
0

因此,我試圖編寫一個遞歸函數,該函數返回BST中元素的「尾部集合」。基本上,它返回每個大於輸入的元素。這是迄今爲止我所擁有的。Java - 在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集合中。我不知道我需要如何去做這件事,任何幫助將不勝感激。

構造函數由我的教授定義,所以我無法改變它們。

回答

0

如果當前節點數據小於toElement,那麼您只需在比較Element之前添加它,然後立即返回。如果條件爲tailset(),則可以在此條件中添加此條件()

+0

但是,如何將節點的數據與泛型類型進行比較? – Paul

+0

請參閱此[鏈接](http://stackoverflow.com/questions/20793082/java-comparing-generic-types)以比較泛型類型。 – frankgreco

+0

@paul如果答案幫助你,然後選擇它作爲正確的答案。 –

相關問題