簡體   English   中英

二進制搜索樹包含方法Java參數

[英]Binary Search Tree Contains Method Java Parameters

我對Binary Search Tree類的contains方法感到困惑。

public boolean contains(Object o) {

    if (o == null)
    {
        throw new NullPointerException("Null Items are not allowed in the tree");
    }


    if (root.item.equals(o))
    {
    return true;
    }
    return false;


}

這是我的標題:

public class BSTreeSet<E extends Comparable<E>> implements Set<E>, CompareCount {


private Node root =null;
private int size;
private int compareCount;

我在JUnit測試中收到的錯誤:

public void testContains() {
    BSTreeSet<Integer> testSet = new BSTreeSet<Integer>( ); 
    testSet.clear( );
    testSet.add( 10);
    testSet.add( 20);
    testSet.add( 30);
    testSet.add( 40);
    testSet.add( 15);
    testSet.add( 25);
    testSet.add( 5);
    testSet.add( 1);

    assertTrue("contains must return true for the element 10", testSet.contains(10));

我對如何使用適當的變量在右側和左側進行搜索感到困惑...我知道這與以前幾乎是相同的問題,但是我被卡住了!

java.util中的抽象類AbstractCollection<E>或接口Collection<E>定義

public boolean contains(Object o)

考慮到使用通用類型E是不必要的約束,這很有意義。 (一個實現可能想要允許一種完全不同的類型。)

使用Node root作為附加參數很可能不是類規范通過某些接口所期望的。 樹的根節點是Tree類的屬性,並且其實現(無論它的確是樹的節點還是其他節點)都應保持隱藏狀態。 通常,將測試對象樹中包含對象obj的測試稱為

if( tree.contains( obj ) ){ ... }

最后,您的實現是不正確的:如果您要查找的對象不等於根節點(或其他某個節點),則必須調查左或右子樹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM