const findPathFromRoot = (root, target, path = "") => {
if (root === null) {
return null;
}
path = path + root.val;
if (root === target) {
return path;
}
const left = findPathFromRoot(root.left, target, path);
const right = findPathFromRoot(root.right, target, path);
return left || right;
};
Почему это работает?
Оператор Return всегда возвращается вызывающей стороне, в вашем случае вы возвращаетесь только тогда, когда обнаруживаете, что цель найдена, которая, в свою очередь, возвращается к одному из findPathFromRoot (currentNode.left, ...) или findPathFromRoot (currentNode.right, ...).Но они не возвращаются.Поэтому исправление в вашем коде должно вернуться, если вы найдете цель в левом или правом поддереве.