Skip to content

原题链接

LeetCode

typescript
function lowestCommonAncestor(root: TreeNode | null, p: TreeNode | null, q: TreeNode | null): TreeNode | null {
	const getPath = (node: TreeNode, target: TreeNode) => {
        let answer = [];
        while(node && node !== target) {
            answer.push(node);
            if(node.val > target.val) {
                node = node.left;
            } else{
                node = node.right;
            }
        }
        answer.push(node);
        return answer;
    }

    const pathP = getPath(root, p);
    const pathQ = getPath(root, q);
    
    let i = pathP.length;
    let j = pathQ.length;
    let answer = null;

    for(let k = 0; k < i && k < j; k++) {
        if(pathP[k] === pathQ[k]) {
            answer = pathP[k];
        } else {
            break;
        }
    }

    return answer;

};