Update hash_set_bst.py

This commit is contained in:
marina 2023-08-07 16:39:20 -07:00 committed by GitHub
parent 0f92fc245c
commit dd2462222f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,26 +6,26 @@
class HashSet: class HashSet:
def __init__(self): def __init__(self):
self.key_range = 131 self.size = 131
self.bucket = [Bucket() for _ in range(self.key_range)] self.bucket = [Bucket() for _ in range(self.size)]
def _hash(self, key): def _get_hash_key(self, key):
return key % self.key_range return key % self.size
def add(self, element: int) -> None: def add(self, element: int) -> None:
bucket_index = self._hash(element) bucket_index = self._get_hash_key(element)
self.bucket[bucket_index].insert(element) self.bucket[bucket_index].insert(element)
def remove(self, element: int) -> None: def remove(self, element: int) -> None:
bucket_index = self._hash(element) bucket_index = self._get_hash_key(element)
self.bucket[bucket_index].delete(element) self.bucket[bucket_index].delete(element)
def contains(self, element: int) -> bool: def contains(self, element: int) -> bool:
bucket_index = self._hash(element) bucket_index = self._get_hash_key(element)
return self.bucket[bucket_index].exists(element) return self.bucket[bucket_index].exists(element)
class TreeNode: class Node:
def __init__(self, value=None): def __init__(self, value=None):
self.val = value self.val = value
self.left = None self.left = None
@ -50,16 +50,16 @@ class BSTree():
def __init__(self): def __init__(self):
self.root = None self.root = None
def search(self, root, value) -> TreeNode: def search(self, root, value) -> Node:
if root is None or value == root.val: if root is None or value == root.val:
return root return root
return self.search(root.left, value) if val < root.value \ return self.search(root.left, value) if val < root.value \
else self.search(root.right, value) else self.search(root.right, value)
def insert(self, root, value) -> TreeNode: def insert(self, root, value) -> Node:
if not root: if not root:
return TreeNode(value) return Node(value)
if value > root.val: if value > root.val:
root.right = self.insert(root.right, value) root.right = self.insert(root.right, value)