образец структуры BST
Мне нужно пройти через BST и вернуть значение узла, наиболее близкое к заданному целевому целочисленному значению.
Обход может быть выполнен следующим образом:
function traverse(node, target, closestValue) {
console.log(node.value);
let potentialClosestValue = Math.abs(node.value - target)
if (potentialClosestValue < closestValue) { closestValue = potentialClosestValue; }
if (node.left) {
traverse(node.left, target, closestValue)
}
if (node.right) {
traverse(node.right, target, closestValue)
}
}
function findClosestValueInBst(tree, target) {
traverse(tree, target, Infinity)
}
Как я узнаю, что обход всего дерева завершен? Я могу создать переменную вне области действия функции обхода и вернуть ее, но могу ли я каким-то образом вернуть ее из рекурсивной функции? например:
function findClosestValueInBst(tree, target, output) {
return traverse(tree, target, Infinity, 0) // returns 13
}