樹結構以下:node
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');
運行結果:spa
[ '00', '0001', '000101' ]
感謝你們閱讀,另外,在這邊幫朋友推一個愛心衆籌,但願你們可以奉獻點愛心,朋友母親,身患直腸癌,目前在北京武警總醫院接收治療,可留言留下您的聯繫方式,往後感激你們!code