Skip to content

Commit eed74bf

Browse files
authored
Update minimum_spanning_tree_prims2.py
1 parent fe0c1b6 commit eed74bf

File tree

1 file changed

+4
-32
lines changed

1 file changed

+4
-32
lines changed

graphs/minimum_spanning_tree_prims2.py

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from __future__ import annotations
1111

1212
from sys import maxsize
13-
from typing import Generic, TypeVar
13+
from typing import TypeVar # Keep only TypeVar import, remove Generic
1414

1515
T = TypeVar("T")
1616

@@ -47,7 +47,7 @@ def get_child_right_position(position: int) -> int:
4747
return (2 * position) + 2
4848

4949

50-
class MinPriorityQueue(Generic[T]):
50+
class MinPriorityQueue[T]: # Updated: use square brackets for generic class
5151
"""
5252
Minimum Priority Queue Class
5353
@@ -90,7 +90,6 @@ def __init__(self) -> None:
9090

9191
def __len__(self) -> int:
9292
return self.elements
93-
9493
def __repr__(self) -> str:
9594
return str(self.heap)
9695

@@ -156,35 +155,8 @@ def _bubble_down(self, elem: T) -> None:
156155
_, child_left_weight = self.heap[child_left_position]
157156
_, child_right_weight = self.heap[child_right_position]
158157
if child_right_weight < child_left_weight and child_right_weight < weight:
159-
self._swap_nodes(child_right_position, curr_pos)
160-
return self._bubble_down(elem)
161-
if child_left_position < self.elements:
162-
_, child_left_weight = self.heap[child_left_position]
163-
if child_left_weight < weight:
164-
self._swap_nodes(child_left_position, curr_pos)
165-
return self._bubble_down(elem)
166-
else:
167-
return None
168-
if child_right_position < self.elements:
169-
_, child_right_weight = self.heap[child_right_position]
170-
if child_right_weight < weight:
171-
self._swap_nodes(child_right_position, curr_pos)
172-
return self._bubble_down(elem)
173-
return None
174-
175-
def _swap_nodes(self, node1_pos: int, node2_pos: int) -> None:
176-
# Swap the nodes at the given positions
177-
node1_elem = self.heap[node1_pos][0]
178-
node2_elem = self.heap[node2_pos][0]
179-
self.heap[node1_pos], self.heap[node2_pos] = (
180-
self.heap[node2_pos],
181-
self.heap[node1_pos],
182-
)
183-
self.position_map[node1_elem] = node2_pos
184-
self.position_map[node2_elem] = node1_pos
185-
186158

187-
class GraphUndirectedWeighted(Generic[T]):
159+
class GraphUndirectedWeighted[T]: # Updated: use square brackets for generic class
188160
"""
189161
Graph Undirected Weighted Class
190162
@@ -217,7 +189,7 @@ def add_edge(self, node1: T, node2: T, weight: int) -> None:
217189
self.connections[node2][node1] = weight
218190

219191

220-
def prims_algo(
192+
def prims_algo[T]( # Updated: add type parameter for generic function
221193
graph: GraphUndirectedWeighted[T],
222194
) -> tuple[dict[T, int], dict[T, T | None]]:
223195
"""

0 commit comments

Comments
 (0)