1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| const tree = { value : 1, children: [ {value:'1-1', children:[{value:'1-1-1',children:[]}]}, {value:'1-2', children:[{value:'1-2-1', children:[{value:'1-2-1-1'}]},{value:'1-2-2',children:[]}]}, {value:'1-3', children:[{value:'1-3-1'},{value:'1-3-2'}]} ] }
// 广度优先 function spread(tree){ var nodeArr = []; var valArr = [];
nodeArr.push(tree); while ( nodeArr.length > 0 ){ let node = nodeArr.shift(); valArr.push(node.value); node.children && node.children.map(v=>{ nodeArr.push(v); }); } return valArr; }
// 深度优先 function deep(tree){ let nodeArr = [], valArr = []; nodeArr.push(tree); while ( nodeArr.length > 0 ){ let node = nodeArr.shift(); valArr.push(node.value); if ( node.children ){ for ( let len=node.children.length-1; len>=0 ;len-- ){ nodeArr.unshift(node.children[len]); } } } return valArr; }
|