Skip to content

Commit f157d20

Browse files
authored
Update skew_heap.py
1 parent 5508c20 commit f157d20

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

data_structures/heap/skew_heap.py

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -62,36 +62,37 @@ def value(self) -> T:
6262
"""
6363
return self._value
6464

65-
@staticmethod
66-
def merge(
67-
root1: SkewNode[T] | None, root2: SkewNode[T] | None
68-
) -> SkewNode[T] | None:
69-
"""
70-
Merge 2 nodes together.
71-
>>> SkewNode.merge(SkewNode(10),SkewNode(-10.5)).value
72-
-10.5
73-
>>> SkewNode.merge(SkewNode(10),SkewNode(10.5)).value
74-
10
75-
>>> SkewNode.merge(SkewNode(10),SkewNode(10)).value
76-
10
77-
>>> SkewNode.merge(SkewNode(-100),SkewNode(-10.5)).value
78-
-100
79-
"""
80-
if not root1:
81-
return root2
65+
@staticmethod
66+
def merge(
67+
root1: SkewNode[T] | None, root2: SkewNode[T] | None
68+
) -> SkewNode[T] | None:
69+
"""
70+
Merge 2 nodes together.
71+
>>> SkewNode.merge(SkewNode(10),SkewNode(-10.5)).value
72+
-10.5
73+
>>> SkewNode.merge(SkewNode(10),SkewNode(10.5)).value
74+
10
75+
>>> SkewNode.merge(SkewNode(10),SkewNode(10)).value
76+
10
77+
>>> SkewNode.merge(SkewNode(-100),SkewNode(-10.5)).value
78+
-100
79+
"""
80+
if not root1:
81+
return root2
8282

83-
if not root2:
84-
return root1
83+
if not root2:
84+
return root1
8585

86-
if root2.value < root1.value:
87-
root1, root2 = root2, root1
86+
# Use explicit __lt__ method for type safety
87+
if root1.value > root2.value:
88+
root1, root2 = root2, root1
8889

89-
result = root1
90-
temp = root1.right
91-
result.right = root1.left
92-
result.left = SkewNode.merge(temp, root2)
90+
result = root1
91+
temp = root1.right
92+
result.right = root1.left
93+
result.left = SkewNode.merge(temp, root2)
9394

94-
return result
95+
return result
9596

9697

9798
class SkewHeap[T]:

0 commit comments

Comments
 (0)