树结构如下:
const tree = [
{
id: '00',
name: '南京理工大学',
children: [
{
id: '0001',
name: '化工学院',
children: [
{
id: '000101',
name: '有机化学',
},
{
id: '000102',
name: '无机化学',
children: [
{
id: '00010201',
name: '无机1组',
},
{
id: '00010202',
name: '无机2组',
}
]
}
]
},
{
id: '0002',
name: '计算机学院',
children: [
{
id: '000201',
name: '硬件学院',
},
{
id: '000202',
name: '软件学院',
children: [
{
id: '00020201',
name: 'Java学院'
},
{
id: '00020202',
name: 'C#学院'
}
]
}
]
}
]
}
];
主要算法如下:
function makePath(tree, target) {
var done = false, path = [];
function traverse(tree, target) {
for (let i = 0; i < tree.length; i++) {
const node = tree[i];
if (!done) {
if (i > 0) {
path.pop();
}
path.push(node.id);
if (node.id === target) {
done = true;
return;
} else {
let children = node.children;
if (children) {
traverse(children, target);
}
}
}
}
if (!done) {
path.pop();
}
return;
};
traverse(tree, target);
return path;
};
makePath(tree, '000101');
运行结果:
[ '00', '0001', '000101' ]
感谢大家阅读,另外,在这边帮朋友推一个爱心众筹,希望大家能够奉献点爱心,朋友母亲,身患直肠癌,目前在北京武警总医院接收治疗,可留言留下您的联系方式,日后感激大家!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。