added some recursive datastructures

This commit is contained in:
2024-02-14 18:44:59 +01:00
parent 36b6a78833
commit 4c5d27e8d1
9 changed files with 416 additions and 0 deletions

View File

@ -0,0 +1,45 @@
from typing import Iterator, Optional
from trees import Node, traverse
from dataclasses import InitVar, dataclass
@dataclass
class BinarySearchTree[T]:
def __post_init__(self):
self.__root: Optional[Node[T]] = None
def insert(self, value: T):
prev = None
curr = self.__root
while curr:
prev = curr
if curr.value > value:
curr = curr.left
else:
curr = curr.right
if prev is None:
self.__root = Node(value, None, None)
elif value < prev.value:
prev.left = Node(value, None, None)
else:
prev.right = Node(value, None, None)
def __delete(prev: Node[T], to_delete: Node[T]) -> Node[T]:
# TODO: implement
pass
def remove(self, value: T):
prev = None
curr = self.__root
while curr:
prev = curr
if curr.value > value:
curr = curr.left
elif curr.value < value:
curr = curr.right
else:
curr = self.__delete(prev, curr)
def __iter__(self) -> Iterator[T]:
yield from traverse(self.__root)