@timonck

Как найти узел с минимальным значением в графе и вернуть этот узел с помощью рекурсии и чистых функций?

У меня есть граф узлы которого представлены объектами:
Node = {
    value: <number>,
    children: [Node]
}

var graph = {value:75,children:[{value:18,children:[{value:35,children:[{value:35,children:[{value:66}]}]}]}]}


Мой код:
const min = (graph) => {

    let nodes = [];
    let mas = null;

    const getNodeValue = (graph) =>{
     Object.keys(graph).map(i => {
         if (typeof graph[i] === 'object') {
                getNodeValue(graph[i])
            } else {
                nodes.push(graph[i])
            }

            let min = Math.min.apply(null, nodes)
                if(graph[i] === min){
             mas = (graph)
            }
     })
    }

    getNodeValue(graph);
    // console.log(mas)
    return mas

};
console.log(min(graph));


Он выводит узел с минимальным значением, но само решение не правильное.
Как можно решить без object.keys?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const findMin = obj =>
  (obj.children || []).reduce((min, n) => {
    n = findMin(n);
    return min.value < n.value ? min : n;
  }, obj);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы