[英]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.