@@ -11,10 +11,8 @@ def swap(a: int, b: int) -> tuple[int, int]:
11
11
Return a tuple (b, a) when given two integers a and b
12
12
>>> swap(2,3)
13
13
(3, 2)
14
- >>> swap(3,4)
15
- (4, 3)
16
- >>> swap(67, 12)
17
- (12, 67)
14
+ >>> swap(3,-4)
15
+ (-4, 3)
18
16
"""
19
17
a ^= b
20
18
b ^= a
@@ -35,6 +33,13 @@ def create_sparse(max_node: int, parent: list[list[int]]) -> list[list[int]]:
35
33
>>> parent[2]
36
34
[0, 0, 0, 0, 0, 0, 0]
37
35
36
+ >>> max_node = 1
37
+ >>> parent = [[0, 0]] + [[0] * 2 for _ in range(19)]
38
+ >>> parent = create_sparse(max_node, parent)
39
+ >>> parent[0]
40
+ [0, 0]
41
+ >>> parent[1]
42
+ [0, 0]
38
43
"""
39
44
j = 1
40
45
while (1 << j ) < max_node :
@@ -52,21 +57,16 @@ def lowest_common_ancestor(
52
57
Return the lowest common ancestor between u and v
53
58
54
59
>>> level = [-1, 0, 1, 1, 2, 2, 2]
55
- >>> parent = [[0, 0, 1, 1, 2, 2, 3],[0, 0, 0, 0, 1, 1, 1]] + [[0] * 7 for _ in range(17)]
60
+ >>> parent = [[0, 0, 1, 1, 2, 2, 3],[0, 0, 0, 0, 1, 1, 1]] + \
61
+ [[0] * 7 for _ in range(17)]
56
62
>>> lowest_common_ancestor(4, 5, level, parent)
57
63
2
58
- >>> lowest_common_ancestor(3, 6, level, parent)
59
- 3
60
64
>>> lowest_common_ancestor(4, 6, level, parent)
61
65
1
62
- >>> lowest_common_ancestor(5, 6, level, parent)
63
- 1
64
66
>>> lowest_common_ancestor(2, 3, level, parent)
65
67
1
66
68
>>> lowest_common_ancestor(6, 6, level, parent)
67
69
6
68
- >>> lowest_common_ancestor(1, 3, level, parent)
69
- 1
70
70
"""
71
71
# u must be deeper in the tree than v
72
72
if level [u ] < level [v ]:
@@ -86,8 +86,6 @@ def lowest_common_ancestor(
86
86
return parent [0 ][u ]
87
87
88
88
89
-
90
-
91
89
# runs a breadth first search from root node of the tree
92
90
def breadth_first_search (
93
91
level : list [int ],
@@ -108,12 +106,8 @@ def breadth_first_search(
108
106
[-1, 0, 1, 1, 2, 2, 2]
109
107
>>> parent[0]
110
108
[0, 0, 1, 1, 2, 2, 3]
111
- >>> parent[1]
112
- [0, 0, 0, 0, 0, 0, 0]
113
- >>> parent[2]
114
- [0, 0, 0, 0, 0, 0, 0]
115
109
116
- # Edge case: graph with one node
110
+
117
111
>>> level = [-1] * 2
118
112
>>> parent = [[0] * 2 for _ in range(20)]
119
113
>>> graph = {1: []}
@@ -122,8 +116,6 @@ def breadth_first_search(
122
116
[-1, 0]
123
117
>>> parent[0]
124
118
[0, 0]
125
- >>> parent[1]
126
- [0, 0]
127
119
"""
128
120
level [root ] = 0
129
121
q : Queue [int ] = Queue (maxsize = max_node )
0 commit comments