原题链接
typescript
function lowestCommonAncestor(root: TreeNode | null, p: TreeNode | null, q: TreeNode | null): TreeNode | null {
const father = new Map<TreeNode, TreeNode>();
const visited = new Map<TreeNode, boolean>();
father.set(root, null);
const dfs = (node: TreeNode) => {
if(node.left) {
father.set(node.left, node);
dfs(node.left);
}
if(node.right) {
father.set(node.right, node);
dfs(node.right);
}
}
dfs(root);
while(p) {
visited.set(p, true);
p = father.get(p);
}
while(q) {
if(visited.get(q)) return q;
q = father.get(q);
}
return null;
};