Skip to content

原题链接

LeetCode;

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;

};