/** * @param {number} n * @param {number[][]} edges * @return {number[]} */ var findMinHeightTrees = function(n, edges) { // 存储树 let graph = Array.from({ length: n }, ()=>([])) for( let item of edges ){ graph[item[0]].push( item[1] ) graph[item[1]].push( item[0] ) } // 入度为 1 的节点 let oneArr = Array.from({ length: n }, ()=>(false))
while( n > 2 ){ // 取出入度为 1 的节点 for( let item in graph ){ if( graph[item].length === 1 ){ oneArr[item] = true } } // 遍历入度为 1 的节点 for( let i in graph ){ if( oneArr[i] && graph[i].length ){ // 互相删除节点 let otherPoint = graph[i].pop() graph[otherPoint] = graph[otherPoint].filter( aa => aa != i ) n -- } } } // 取出结果 let res = [] for( let i in oneArr ){ if( !oneArr[i] ) res.push(i) } return res };