@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?
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const findMin = obj =>
  (obj.children || []).reduce((min, n) => (
    n = findMin(n),
    min.value < n.value ? min : n
  ), obj);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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