Skip to content

Commit c5693db

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent 180d8d5 commit c5693db

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

data_structures/heap/skew_heap.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,11 @@ def value(self) -> T:
4141
10
4242
"""
4343
return self._value
44+
4445
@staticmethod
45-
def merge(root1: SkewNode[T] | None, root2: SkewNode[T] | None) -> SkewNode[T] | None:
46+
def merge(
47+
root1: SkewNode[T] | None, root2: SkewNode[T] | None
48+
) -> SkewNode[T] | None:
4649
"""
4750
Merge two nodes together.
4851
>>> SkewNode.merge(SkewNode(10), SkewNode(-10.5)).value
@@ -59,7 +62,7 @@ def merge(root1: SkewNode[T] | None, root2: SkewNode[T] | None) -> SkewNode[T] |
5962
return root2
6063
if not root2:
6164
return root1
62-
65+
6366
# Compare values using explicit comparison function
6467
if SkewNode._is_less_than(root1.value, root2.value):
6568
# root1 is smaller, make it the new root
@@ -113,7 +116,7 @@ class SkewHeap(Generic[T]):
113116
def __init__(self, data: Iterable[T] | None = ()) -> None:
114117
"""
115118
Initialize the skew heap with optional data
116-
119+
117120
>>> sh = SkewHeap([3, 1, 3, 7])
118121
>>> list(sh)
119122
[1, 3, 3, 7]
@@ -126,7 +129,7 @@ def __init__(self, data: Iterable[T] | None = ()) -> None:
126129
def __bool__(self) -> bool:
127130
"""
128131
Check if the heap is not empty
129-
132+
130133
>>> sh = SkewHeap()
131134
>>> bool(sh)
132135
False
@@ -138,32 +141,33 @@ def __bool__(self) -> bool:
138141
False
139142
"""
140143
return self._root is not None
144+
141145
def __iter__(self) -> Iterator[T]:
142146
"""
143147
Iterate through all values in sorted order
144-
148+
145149
>>> sh = SkewHeap([3, 1, 3, 7])
146150
>>> list(sh)
147151
[1, 3, 3, 7]
148152
"""
149153
# Create a temporary heap for iteration
150154
temp_heap = SkewHeap()
151155
result: list[T] = []
152-
156+
153157
# Pop all elements from the heap
154158
while self:
155159
item = self.pop()
156160
result.append(item)
157161
temp_heap.insert(item)
158-
162+
159163
# Restore the heap state
160164
self._root = temp_heap._root
161165
return iter(result)
162166

163167
def insert(self, value: T) -> None:
164168
"""
165169
Insert a new value into the heap
166-
170+
167171
>>> sh = SkewHeap()
168172
>>> sh.insert(3)
169173
>>> sh.insert(1)
@@ -177,7 +181,7 @@ def insert(self, value: T) -> None:
177181
def pop(self) -> T:
178182
"""
179183
Remove and return the smallest value from the heap
180-
184+
181185
>>> sh = SkewHeap([3, 1, 3, 7])
182186
>>> sh.pop()
183187
1
@@ -196,10 +200,11 @@ def pop(self) -> T:
196200
if self._root:
197201
self._root = SkewNode.merge(self._root.left, self._root.right)
198202
return result
203+
199204
def top(self) -> T:
200205
"""
201206
Return the smallest value without removing it
202-
207+
203208
>>> sh = SkewHeap()
204209
>>> sh.insert(3)
205210
>>> sh.top()
@@ -221,7 +226,7 @@ def top(self) -> T:
221226
def clear(self) -> None:
222227
"""
223228
Clear all elements from the heap
224-
229+
225230
>>> sh = SkewHeap([3, 1, 3, 7])
226231
>>> sh.clear()
227232
>>> sh.pop()

0 commit comments

Comments
 (0)