Skip to content

Commit 7488c50

Browse files
authored
Fix type annotations in randomized_heap.py (TheAlgorithms#5704)
1 parent 0f015fa commit 7488c50

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

data_structures/heap/randomized_heap.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from __future__ import annotations
44

55
import random
6-
from typing import Generic, Iterable, TypeVar
6+
from typing import Any, Generic, Iterable, TypeVar
77

8-
T = TypeVar("T")
8+
T = TypeVar("T", bound=bool)
99

1010

1111
class RandomizedHeapNode(Generic[T]):
@@ -76,8 +76,10 @@ def __init__(self, data: Iterable[T] | None = ()) -> None:
7676
[1, 3, 3, 7]
7777
"""
7878
self._root: RandomizedHeapNode[T] | None = None
79-
for item in data:
80-
self.insert(item)
79+
80+
if data:
81+
for item in data:
82+
self.insert(item)
8183

8284
def insert(self, value: T) -> None:
8385
"""
@@ -93,7 +95,7 @@ def insert(self, value: T) -> None:
9395
"""
9496
self._root = RandomizedHeapNode.merge(self._root, RandomizedHeapNode(value))
9597

96-
def pop(self) -> T:
98+
def pop(self) -> T | None:
9799
"""
98100
Pop the smallest value from the heap and return it.
99101
@@ -111,7 +113,12 @@ def pop(self) -> T:
111113
...
112114
IndexError: Can't get top element for the empty heap.
113115
"""
116+
114117
result = self.top()
118+
119+
if self._root is None:
120+
return None
121+
115122
self._root = RandomizedHeapNode.merge(self._root.left, self._root.right)
116123

117124
return result
@@ -138,7 +145,7 @@ def top(self) -> T:
138145
raise IndexError("Can't get top element for the empty heap.")
139146
return self._root.value
140147

141-
def clear(self):
148+
def clear(self) -> None:
142149
"""
143150
Clear the heap.
144151
@@ -151,7 +158,7 @@ def clear(self):
151158
"""
152159
self._root = None
153160

154-
def to_sorted_list(self) -> list[T]:
161+
def to_sorted_list(self) -> list[Any]:
155162
"""
156163
Returns sorted list containing all the values in the heap.
157164

0 commit comments

Comments
 (0)