Add type annotations (#4814)

This commit is contained in:
scfenton6 2021-10-11 18:34:30 +02:00 committed by GitHub
parent bcfca67faa
commit abaa0d754b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,17 +1,19 @@
"""
disjoint set
Disjoint set.
Reference: https://en.wikipedia.org/wiki/Disjoint-set_data_structure
"""
class Node:
def __init__(self, data):
def __init__(self, data: int) -> None:
self.data = data
self.rank: int
self.parent: Node
def make_set(x):
def make_set(x: Node) -> None:
"""
make x as a set.
Make x as a set.
"""
# rank is the distance from x to its' parent
# root's rank is 0
@ -19,9 +21,9 @@ def make_set(x):
x.parent = x
def union_set(x, y):
def union_set(x: Node, y: Node) -> None:
"""
union two sets.
Union of two sets.
set with bigger rank should be parent, so that the
disjoint set tree will be more flat.
"""
@ -37,9 +39,9 @@ def union_set(x, y):
y.rank += 1
def find_set(x):
def find_set(x: Node) -> Node:
"""
return the parent of x
Return the parent of x
"""
if x != x.parent:
x.parent = find_set(x.parent)
@ -57,7 +59,7 @@ def find_python_set(node: Node) -> set:
raise ValueError(f"{node.data} is not in {sets}")
def test_disjoint_set():
def test_disjoint_set() -> None:
"""
>>> test_disjoint_set()
"""