blob: 0feaae2ef98b96e76a49e80d6c12bb26de606824 (
plain) (
tree)
|
|
#!/usr/bin/env python
import typing
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.right = right
self.left = left
class Solution:
def amountOfTime(self, root: typing.Optional[TreeNode], start: int) -> int:
def dfs(node):
if node is None:
return
if node.left:
graph[node.val].append(node.left.val)
graph[node.left.val].append(node.val)
if node.right:
graph[node.val].append(node.right.val)
graph[node.right.val].append(node.val)
dfs(node.left)
dfs(node.right)
graph = defaultdict(list)
dfs(root)
visited = set()
queue = deque([start])
time = -1
while queue:
time += 1
for _ in range(len(queue)):
current_node = queue.popleft()
visited.add(current_node)
for neighbor in graph[current_node]:
if neighbor not in visited:
queue.append(neighbor)
return time
def main() -> None:
pass
if __name__ == "__main__":
main()
|