Найти путь к родительскому узлу в дереве от данного узла - PullRequest
1 голос
/ 08 ноября 2019

С учетом tree описания ниже, при node скажем 9 распечатке пути от узла давать к root узлу.

let sampleData = {
id: 1,
children: [{
    id: 2,
    children: [{
        id: 5,
        children: [{
            id: 8
        }]
    },
        {
            id: 6
        }
    ]
},
    {
        id: 3,
        children: [{
            id: 9
        }, {id: 10 }]}, {
        id: 4
     }
     ]
  }

, например, если задано 9, вывод должен бытьтогда вывод должен быть 1 , 3, 9

1 Ответ

2 голосов
/ 08 ноября 2019

как предложено, вы можете использовать алгоритм DFS.

function dfs(o, target){
    if(o.id == target) return [target];
    if(!o.children) return false;
    let path;
    o.children.find(x=>path=dfs(x, target));
    if(path){
        return [o.id].concat(path);
    }
};
let sampleData={"id":1,"children":[{"id":2,"children":[{"id":5,"children":[{"id":8}]},{"id":6}]},{"id":3,"children":[{"id":9},{"id":10}]},{"id":4}]}
let path;
[sampleData].find(x=>path=dfs(x, 9))
console.log(path);
...