Skip to content

Commit f0a4b6a

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

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

data_structures/heap/skew_heap.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ def value(self) -> T:
6161
return self._value
6262

6363
@staticmethod
64-
def merge(root1: SkewNode[T] | None, root2: SkewNode[T] | None) -> SkewNode[T] | None:
64+
def merge(
65+
root1: SkewNode[T] | None, root2: SkewNode[T] | None
66+
) -> SkewNode[T] | None:
6567
"""
6668
Merge two nodes together.
6769
>>> SkewNode.merge(SkewNode(10), SkewNode(-10.5)).value
@@ -78,7 +80,7 @@ def merge(root1: SkewNode[T] | None, root2: SkewNode[T] | None) -> SkewNode[T] |
7880
return root2
7981
if not root2:
8082
return root1
81-
83+
8284
# Compare values using explicit __lt__ method
8385
try:
8486
# Check if root1 is smaller than root2
@@ -92,7 +94,7 @@ def merge(root1: SkewNode[T] | None, root2: SkewNode[T] | None) -> SkewNode[T] |
9294
except (TypeError, AttributeError):
9395
# Fallback if __lt__ comparison fails
9496
pass
95-
97+
9698
# If root2 is smaller or comparison failed, use root2 as new root
9799
result = root2
98100
temp = root2.right
@@ -101,7 +103,6 @@ def merge(root1: SkewNode[T] | None, root2: SkewNode[T] | None) -> SkewNode[T] |
101103
return result
102104

103105

104-
105106
class SkewHeap[T]:
106107
"""
107108
A data structure that allows inserting a new value and popping the smallest
@@ -128,7 +129,7 @@ class SkewHeap[T]:
128129
def __init__(self, data: Iterable[T] | None = ()) -> None:
129130
"""
130131
Initialize the skew heap with optional data
131-
132+
132133
>>> sh = SkewHeap([3, 1, 3, 7])
133134
>>> list(sh)
134135
[1, 3, 3, 7]
@@ -141,7 +142,7 @@ def __init__(self, data: Iterable[T] | None = ()) -> None:
141142
def __bool__(self) -> bool:
142143
"""
143144
Check if the heap is not empty
144-
145+
145146
>>> sh = SkewHeap()
146147
>>> bool(sh)
147148
False
@@ -157,25 +158,25 @@ def __bool__(self) -> bool:
157158
def __iter__(self) -> Iterator[T]:
158159
"""
159160
Iterate through all values in sorted order
160-
161+
161162
>>> sh = SkewHeap([3, 1, 3, 7])
162163
>>> list(sh)
163164
[1, 3, 3, 7]
164165
"""
165166
result: list[T] = []
166167
while self:
167168
result.append(self.pop())
168-
169+
169170
# Restore the heap state
170171
for item in result:
171172
self.insert(item)
172-
173+
173174
return iter(result)
174175

175176
def insert(self, value: T) -> None:
176177
"""
177178
Insert a new value into the heap
178-
179+
179180
>>> sh = SkewHeap()
180181
>>> sh.insert(3)
181182
>>> sh.insert(1)
@@ -189,7 +190,7 @@ def insert(self, value: T) -> None:
189190
def pop(self) -> T:
190191
"""
191192
Remove and return the smallest value from the heap
192-
193+
193194
>>> sh = SkewHeap([3, 1, 3, 7])
194195
>>> sh.pop()
195196
1
@@ -212,7 +213,7 @@ def pop(self) -> T:
212213
def top(self) -> T:
213214
"""
214215
Return the smallest value without removing it
215-
216+
216217
>>> sh = SkewHeap()
217218
>>> sh.insert(3)
218219
>>> sh.top()
@@ -234,7 +235,7 @@ def top(self) -> T:
234235
def clear(self) -> None:
235236
"""
236237
Clear all elements from the heap
237-
238+
238239
>>> sh = SkewHeap([3, 1, 3, 7])
239240
>>> sh.clear()
240241
>>> sh.pop()

0 commit comments

Comments
 (0)