具体有难度的地方已在文中注释
集合基于二叉搜索树和单链表实现。
另外实现单链表主要是比较他们的效率,且二叉搜索树的最坏时间复杂度会退化为一条单链表,时间复杂度也会变为O(log2 n)
单链表集合:
/**
* @author Jay
* @date 2020/7/14 9:47
* @Description:单链表集合
*/
public class LinklistSet<E extends Comparable<E>>implements Set<E> {
LinkList<E> list;
public LinklistSet(){
list=new LinkList<>();
}
@Override
public void add(E e) {
if (!list.contains(e))
list.addFirst(e);
}
@Override
public void remove(E e) {
list.removeElement(e);
}
@Override
public boolean contains(E e) {
return list.contains(e);
}
@Override
public int getSize() {
return list.getSize();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
}
二叉搜索树集合:
/**
* @author Jay
* @date 2020/7/14 9:39
* @Description:二叉搜索树集合
*/
public class BSTSet<E extends Comparable<E>> implements Set<E> {
BST<E> bst;
public BSTSet(){
bst=new BST<>();
}
@Override
public void add(E e) {
bst.add(e);
}
@Override
public void remove(E e) {
bst.remove(e);
}
@Override
public boolean contains(E e) {
return bst.contains(e);
}
@Override
public int getSize() {
return bst.getSize();
}
@Override
public boolean isEmpty() {
return bst.isEmpty();
}
}