anoldvozer1710.v2
Senior Member
Bài hôm nay hay thế mà ko ai làm à
Edit: Vừa đọc thêm solution thì còn có cách khác là tính đường từ root tới các cháu trước rồi mới tìm tổ tiên gần nhất. Cũng ko khác là mấy
- Tìm node tổ tiên gần nhất của 2 cháu
- Tìm quãng đường từ tổ tiên đến 2 cháu
- Cộng 2 quãng đường lại với nhau là xong (quãng đường từ cháu khởi đầu thì chỉ có đi ên thôi nên là toàn U
)
JavaScript:
function getDirections(root: TreeNode | null, start: number, dest: number): string {
const findLca = (node: TreeNode, u: number, v: number) => {
if (!node) return null;
if (node.val === u || node.val === v) return node;
const l = findLca(node.left, u, v);
const r = findLca(node.right, u, v);
if (!l) return r;
else if (!r) return l;
else return node;
}
const go = (node: TreeNode, val: number, res = '') => {
if (!node) return '';
if (node.val === val) return res;
return go (node.left, val, res + 'L') + go (node.right, val, res + 'R')
}
const lca = findLca(root, start, dest);
const s = go(lca, start), d = go(lca, dest);
return 'U'.repeat(s.length) + d
};
Edit: Vừa đọc thêm solution thì còn có cách khác là tính đường từ root tới các cháu trước rồi mới tìm tổ tiên gần nhất. Cũng ko khác là mấy

Sửa lần cuối:

Lần sau có đọc/cop thì nhớ ra vẻ ta đây tự làm nhé 

, pv algo thì lọc được cái con mẹ gì