class Solution: def Git(self , matrix: List[str], versionA: int, versionB: int) -> int: n = len(matrix) g = [[] for _ in range(n)] for i,c in enumerate(matrix): for j,x in enumerate(c): if x=='1': g[i].append(j) print(g) parent = {} def dfs(node,par): for ner in g[node]: if ner!=par: parent[ner] = node dfs(ner, node) dfs(0,-1) parent[0] = -1 print(parent) pathA = set() while versionA!=-1: pathA.add(versionA) versionA = parent[versionA] while versionB not in pathA: versionB = parent[versionB] return versionB
可以使用深度优先搜索(DFS)来记录每个节点到根节点的路径,然后找到这两个路径的最近公共祖先。