def testDelete(): t = BST() t.put(2) t.put(1) t.put(3) t.delete(1) assert not t.contains(1)
class Set(): def __init__(self): self.bst = BST() def add(self, e): self.bst.add(e) def contains(self, e): return self.bst.contains(e) def remove(self, e): self.bst.remove(e) #返回set中大于等于e的最小元素 def ceil(self, e): pass #返回set中小于等于e的最大元素 def floor(self, e): pass def getSize(self): return self.bst.getSize() def isEmpty(self): return self.bst.isEmpty()
class BSTSet(SetBase): def __init__(self): self._bst = BST() def get_size(self): return self._bst.size() def is_empty(self): return self._bst.is_empty() def add(self, e): return self._bst.add(e) def contains(self, e): return self._bst.contains(e) def remove(self, e): return self._bst.remove(e)
class BSTSet(Set): def __init__(self): self.bst = BST() # 判断集合是否为空 def is_empty(self): return self.bst.is_empty() # 添加 ele 至集合 def add(self, ele): self.bst.add(ele) # 是否包含元素 ele def contains(self, ele): return self.bst.contains(ele) # 从集合内删除 ele def remove(self, ele): self.remove(ele) # 获取集合大小 def get_size(self): return self.bst.get_size()
f.close() f = open('names_2.txt', 'r') names_2 = f.read().split("\n") # List containing 10000 names f.close() duplicates = [] # this solution is 0(n ^ 2) BST = BST('names') for name1 in names_1: BST.insert(name1) for name2 in names_2: if BST.contains(name2): duplicates.append(name2) end_time = time.time() print(f"{len(duplicates)} duplicates:\n\n{', '.join(duplicates)}\n\n") print(f"runtime: {end_time - start_time} seconds") # ---------- Stretch Goal ----------- # Python has built-in tools that allow for a very efficient approach to this problem # What's the best time you can accomplish with no restrictions on techniques or data # structures? # This solution is 0(n) !!!!!!!!!!!!!!!!!!!!!!!!!!!!! n1 = set(names_1) n2 = set(names_2)
#!/usr/env/bin python3 # File that uses BST from BST import BST bst = BST(25) bst.insert(12) bst.insert(50) bst.insert(6) bst.insert(45) bst.insert(1) print("Does tree contain 1 {0}".format(bst.contains(1))) print("Does tree contain 5 {0}".format(bst.contains(5))) print("Does tree contain 12 {0}".format(bst.contains(12))) print("Does tree contain 51 {0}".format(bst.contains(51)))
def testPut(): t = BST() t.put(2) t.put(1) t.put(3) assert t.contains(1)
def testInit(): t = BST() assert t.contains(1) == False